久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

基于WPF系統(tǒng)框架設(shè)計(jì)(5)

 bao911 2013-11-26

AvalonDock 是一個(gè).NET庫(kù),,用于在停靠模式布局(docking)中排列一系列WPF/WinForm控件,。最新發(fā)布的版本原生支持MVVM框架,、Aero Snap特效并具有更好的性能,。

AvalonDock 2.0版本已經(jīng)發(fā)布了,新版本是用MVVM框架重新編寫,,似乎也用了Command(命令)模式,。2.0版的文檔尚未發(fā)布,但你可以參考Avalon.TestApp 或者2.0版源碼中的Avalon.MVVMTestApp文件夾來(lái)查看新的API,。

前一篇博文有介紹關(guān)于AvalonDock使用-《Docking For WPF–AvalonDock

還有一篇也是同類的關(guān)于多文檔界面設(shè)計(jì)《基于WPF系統(tǒng)框架設(shè)計(jì)-Ribbon整合Avalondock 2.0實(shí)現(xiàn)多文檔界面設(shè)計(jì)(一)》

單文檔界面樣式是Windows應(yīng)用程序比較常用的布局選項(xiàng),。Microsoft Windows中的“記事本”是單文檔界面應(yīng)用程序的一個(gè)典型示例。在“記事本”中,,同一時(shí)間只能打開(kāi)一個(gè)文檔,。資源管理器樣式界面是包含兩個(gè)“窗格”或區(qū)域的單個(gè)窗口,通常由左側(cè)的樹(shù)或分層視圖以及右側(cè)的顯示區(qū)域組成,,與“Microsoft Windows資源管理器”一樣,。資源管理器樣式界面適合于定位或?yàn)g覽大量的文檔、圖片或文件,。

多文檔界面是從Windows 2.0下的Microsoft Excel電子表格程序開(kāi)始引入的,,由于Excel電子表格用戶有時(shí)需要同時(shí)操作多份表格。

基于多文檔,,多任務(wù)模式操作的靈活性,,Ribbon框架設(shè)計(jì)中也整合多文檔界面布局功能,下面就來(lái)實(shí)施做一個(gè)案例,。

  • 準(zhǔn)備工作:在這網(wǎng)址上下載AvalonDock和實(shí)例:  http://avalondock./

image

  • 主要布局框架:
  1. Xceed.Wpf.AvalonDock.dll
  • 其他的是主題樣式模板:
  1. Xceed.Wpf.AvalonDock.Themes.Expression.dll
  2. Xceed.Wpf.AvalonDock.Themes.Metro.dll
  3. Xceed.Wpf.AvalonDock.Themes.VS2010.dll
  • 添加引用

把這些程序集添加到項(xiàng)目引用中,,如下圖:

image

  • XAML中添加Dock標(biāo)簽

以XAML模式打開(kāi)MainWindow.xaml,添加Dock標(biāo)簽,如下:

 

復(fù)制代碼
<ad:DockingManager x:Name="dockManager" Grid.Row="1">
            <ad:DockingManager.Theme>
                <themes:ExpressionBlueTheme/><!--主題樣式,跟Ribbon主題一致-->
            </ad:DockingManager.Theme>
            <xcad:LayoutRoot>
                <xcad:LayoutPanel Orientation="Vertical">
                    <xcad:LayoutDocumentPaneGroup>
                        <xcad:LayoutDocumentPane>
                            <xcad:LayoutDocument ContentId="Document1" Title="查詢用戶">
                                
                            </xcad:LayoutDocument>
                            <xcad:LayoutDocument ContentId="Documen2" Title="添加用戶">

                            </xcad:LayoutDocument>
                            <xcad:LayoutDocument ContentId="Documen3" Title="更新用戶">

                            </xcad:LayoutDocument>
                        </xcad:LayoutDocumentPane>
                    </xcad:LayoutDocumentPaneGroup>
                </xcad:LayoutPanel>

            </xcad:LayoutRoot>
               <!--<xcad:LayoutRoot>
                 <xcad:LayoutPanel Orientation="Vertical">
                    <xcad:LayoutDocumentPane/>
                    <xcad:LayoutAnchorablePane Name="ToolsPane" DockHeight="150">
                    </xcad:LayoutAnchorablePane>
                </xcad:LayoutPanel>
            </xcad:LayoutRoot>-->
        </ad:DockingManager>
復(fù)制代碼
  • 運(yùn)行程序后效果

同樣這個(gè)布局控件也有主題,,我針對(duì)Ribbon框架設(shè)計(jì)了三個(gè)Dock主題Silver,Blue,Black,。

如下圖:

Silver:

image

Blue:

image

Black:

image

  • 如何做到支持動(dòng)態(tài)加載Dock主題呢?

添加如下代碼即可以實(shí)現(xiàn)動(dòng)態(tài)更改Dock主題:

復(fù)制代碼
public static void ChangeTheme(DockingManager dockingManager, ThemeStyle themeStyle)
 {
            #region 設(shè)置控件背景的樣式
            Xceed.Wpf.AvalonDock.Themes.Theme theme = null;
            switch (themeStyle)
            {
                case ThemeStyle.Blue: theme = new ExpressionBlueTheme(); break;
                case ThemeStyle.Black: theme = new ExpressionDarkTheme(); break;
                case ThemeStyle.Silver: theme = new ExpressionSilverTheme(); break;
                default: theme=new ExpressionBlueTheme(); break;
            }
            dockingManager.Theme = theme;
            #endregion
}
復(fù)制代碼
  • 如何做到動(dòng)態(tài)加載文檔界面呢?

現(xiàn)在的效果只是在XAML中固定的多文檔界面,,但是實(shí)際的系統(tǒng)是要支持動(dòng)態(tài)創(chuàng)建文檔的,,比如我點(diǎn)“查詢用戶”就會(huì)顯示這個(gè)文檔內(nèi)容,,

我把上面改成動(dòng)態(tài)生成文檔的標(biāo)簽,參考如下源碼:

復(fù)制代碼
<ad:DockingManager x:Name="dockManager" Grid.Row="1">
            <ad:DockingManager.Theme>
                <ad:ExpressionBlueTheme/>
            </ad:DockingManager.Theme>
            <ad:LayoutRoot>
                <ad:LayoutPanel Orientation="Vertical">
                    <ad:LayoutDocumentPane/>
                    <ad:LayoutAnchorablePane Name="ToolsPane" DockHeight="150">
                    </ad:LayoutAnchorablePane>
                </ad:LayoutPanel>
            </ad:LayoutRoot>
        </ad:DockingManager>
復(fù)制代碼

         運(yùn)行后如下圖:    

image

現(xiàn)在只是一個(gè)空的框架,,還沒(méi)有添加文檔界面喔,,下面就來(lái)實(shí)現(xiàn)動(dòng)態(tài)加載文檔頁(yè)面。

后臺(tái)代碼,我實(shí)現(xiàn)了動(dòng)態(tài)創(chuàng)建三個(gè)文檔:

復(fù)制代碼
private void BtnAddUser_Click(object sender, RoutedEventArgs e)
        {
            Fluent.Button button = (Fluent.Button) sender;
            CreateFunctionTab(button.Header.ToString());
        }

        private void CreateFunctionTab(string tabName)
        {
            var firstDocumentPane = dockManager.Layout.Descendents().OfType<LayoutDocumentPane>().FirstOrDefault();
            if (firstDocumentPane != null)
            {

                LayoutDocument doc2 = new LayoutDocument();
                doc2.Title = tabName;
                doc2.IsActive = true;
                firstDocumentPane.Children.Add(doc2);

            }
        }

        private void BtnModifyUser_Click(object sender, RoutedEventArgs e)
        {
            Fluent.Button button = (Fluent.Button)sender;
            CreateFunctionTab(button.Header.ToString());
        }

        private void BtnQueryUser_Click(object sender, RoutedEventArgs e)
        {
            Fluent.Button button = (Fluent.Button)sender;
            CreateFunctionTab(button.Header.ToString());
        }
復(fù)制代碼

image

          現(xiàn)在能夠動(dòng)態(tài)加載文檔了,,就幾行代碼就能搞定,,可是,文檔也是空的喲,,怎么辦?

實(shí)例源碼

          附:我想到下一篇博文介紹這一塊的設(shè)計(jì),我向來(lái)喜歡短小精悍文章,。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多