WPF實現類似MDI子窗體的功能
阿新 • • 發佈:2019-02-06
在我的上一篇部落格中 http://blog.csdn.net/soft2buy/article/details/5479946,提到了用UserControl做為WPF的“MDI子窗體”。今天偶然發現XCeed 開發的Extended WPF Toolkit裡面有個ChildWindow窗體可以做為MainWindow的子窗體。ChildWindow也是從UserControl繼乘的。
先看看實現的效果圖:
可以用滑鼠拖動窗體,也可以用鍵盤的上下左右箭頭移動窗體。效果還是不錯的!
實現步驟如下:
1.首先下載 Extended WPF Toolkit Community Edition 當前版本 2.0.0 (網址: http://wpftoolkit.codeplex.com/)
Community Edition是開源免費版本,可以看到裡面的很多控制元件功能都很強大,值得花點時間研究。所有控制元件的使用方法可以參考:
2.新建一個WPF應用程式工程,新增對 Xceed.Wpf.Toolkit.dll 這個檔案的引用:
3. 在MainWindow窗體新增對Xceed.Wpf.Toolkit的引用:
ToolKit裡面就有一個WindowContainer的控制元件,我們用他作為子窗體的容器,
<TookKit:WindowContainer/>
可以直接放一個子窗體在裡面,程式碼如下:
<!--子窗體要放在一個WindowContainer裡面--> <TookKit:WindowContainer x:Name="ChildContainer" Background="DarkGray" Width="550" Height="377" Canvas.Left="9" Canvas.Top="44"> <!--子窗體--> <TookKit:ChildWindow x:Name="chWin" Caption="子窗體" Width="200" Height="200" WindowBackground="LightGreen" IsModal="False" WindowState="Open"/> </TookKit:WindowContainer>
也可以新建一個窗體(如:ChildWin.xaml)
修改窗體的XAML程式碼:
<ToolKit:ChildWindow
x:Class="WPFChildWin.ChildWin"
xmlns:ToolKit="http://schemas.xceed.com/wpf/xaml/toolkit"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="300" Width="300" WindowBackground="LightBlue" Caption="子窗體" IsModal="False" WindowState="Closed">
<Canvas x:Name="myCanvas">
<TextBlock Text="這是一個字窗體" Canvas.Left="89" Canvas.Top="109"/>
<Button x:Name="btClose" Width="70" Height="30" Content="關閉" Canvas.Left="200" Canvas.Top="218" Click="btClose_Click"/>
</Canvas>
</ToolKit:ChildWindow>
由於是從UserControl繼承的,所以窗體的C#程式碼要刪除 ":Window"
主窗體MainWindow就可以通過一下方式載入:
ChildWin cw = new ChildWin();
cw.WindowState = Xceed.Wpf.Toolkit.WindowState.Open;
ChildContainer.Children.Add(cw);
本文原始碼下載: