wpf的子窗體選擇有很多種,如最常見的是項目新建窗體(Window)作為子窗體
,或者新建wpf用戶控件(UserControl)。而其實利用Xceed.Wpf.Toolkit.dll 可以輕松布局如下:

第一步:引用Xceed.Wpf.Toolkit.dll。
第二步:在XAML引用名稱空間:
xmlns:xctk="clr-namespace:Xceed.Wpf.Toolkit.Primitives;assembly=Xceed.Wpf.Toolkit"
xmlns:wpf="clr-namespace:Xceed.Wpf.Toolkit;assembly=Xceed.Wpf.Toolkit"
第三步:布局,XAML如下:
<Window x:Class="ChildWindowDemo.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:xctk="clr-namespace:Xceed.Wpf.Toolkit.Primitives;assembly=Xceed.Wpf.Toolkit" xmlns:wpf="clr-namespace:Xceed.Wpf.Toolkit;assembly=Xceed.Wpf.Toolkit" Title="MainWindow" Height="500" Width="700"> <Grid> <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center"> <Button Margin="5" Content="打開子窗體1" Height="40" Width="100" Click="btnOpenChildWindow1_Click"/> <Button Margin="5" Content="打開子窗體2" Height="40" Width="100" Click="btnOpenChildWindow2_Click"/> </StackPanel> <xctk:WindowContainer> <wpf:ChildWindow x:Name="childWindow1" WindowStartupLocation="Center" WindowState="Closed" Caption="子窗體1" Width="300" Height="300"> <StackPanel> <TextBlock Text="這是子窗體1" HorizontalAlignment="Center" VerticalAlignment="Center"/> </StackPanel> </wpf:ChildWindow> <wpf:ChildWindow x:Name="childWindow2" WindowStartupLocation="Center" WindowState="Closed" Caption="子窗體2" Width="500" Height="400"> <StackPanel> <TextBlock Text="這是子窗體2" HorizontalAlignment="Center" VerticalAlignment="Center"/> </StackPanel> </wpf:ChildWindow> </xctk:WindowContainer> </Grid> </Window>
C#后台代碼如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace ChildWindowDemo { /// <summary> /// MainWindow.xaml 的交互邏輯 /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void btnOpenChildWindow1_Click(object sender, RoutedEventArgs e) { childWindow1.IsModal = true;//設置為模態窗口 childWindow1.Show(); } private void btnOpenChildWindow2_Click(object sender, RoutedEventArgs e) { childWindow2.IsModal = true; childWindow2.Show(); } } }
總結:有些簡單的子窗體,例如要彈出一個列表窗口,而又不想去為此新建一個window,嘗試使用ChildWindow,
以及用XAML綁定數據到相應的ChildWindow上,效果很不錯
