主窗口中的C#WPF子窗口

所以四环看了一下,发现MDI是WPF的obselete,基本上我想要做的是在加载的网格对象中显示特定的页面,一旦从我的下拉菜单中select一个菜单项,网格的内容将被改变为来自不同页面的内容(这取决于select哪个菜单项目)。

进入更多的细节(也许这将有助于)窗口将被显示的区域将需要有没有边界的窗口,或标题,或button来最小化/closures等。只显示这个窗口的内容,它将不会resize,但固定,我有一个菜单,正如我刚才所说,当一个不同的菜单项被点击,相关的窗口应显示在固定的区域。 此外,如果显示的内容中有任何button或事件发生(例如,button导致不同的窗口显示),则固定区域中的内容应该被这个新窗口的内容replace

这是我第一次做这样的事情,从我读的这听起来像这是一个非常棘手的WPF应用程序,我希望我能得到某种forms的洞察力或方向我应该去,以便我可以使这成为可能。

谢谢。

Solutions Collecting From Web of "主窗口中的C#WPF子窗口"

你可以尝试从扩展WPF工具包社区版的例子ChildWindow 。

编辑#1:

但是,每当我尝试在Xaml中创建一个WindowContainer它与名称空间前缀与“xctk:WindowContainer”有问题,所以如何创建适当的名称空间前缀使用它?

您必须添加该名称空间:

xmlns:xctk=http://schemas.xceed.com/wpf/xaml/toolkit 

例如:

 <Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit" Title="MainWindow" Height="350" Width="525"> <Grid> <xctk:WindowContainer> <xctk:ChildWindow Height="100" Width="250" Left="10" Top="10"> <TextBlock Text="Hello World ..." /> </xctk:ChildWindow> </xctk:WindowContainer> </Grid> </Window> 

编辑#2:

你当然可以改变一些属性(例如):

 <xctk:ChildWindow Height="100" Width="250" Left="10" Top="10" Name="chWindow" CloseButtonVisibility="Hidden" WindowStyle="None" BorderThickness="0"> 

编辑#3:

好吧,所以一切引用它仍然给我错误..

试试吧简单…创建Wpf应用程序,添加扩展WPF工具包2.4 NuGet包 ,在MainWindow.xaml中添加前面的代码,并在MainWindow.xaml.cs中添加下面的代码:

 namespace WpfApplication1 { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); this.Loaded += MainWindow_Loaded; } void MainWindow_Loaded(object sender, RoutedEventArgs e) { this.chWindow.Show(); } } }