主窗口中的C#WPF子窗口

时间:2015-05-22 23:38:58

标签: c# wpf windows menu mdi

所以iv环顾四周,发现MDI对于WPF很有用,基本上我要做的是在加载时在网格对象中显示一个特定的页面,一旦我的下拉菜单中的菜单项是如果选中,网格的内容将更改为来自不同页面的内容(这取决于选择的菜单项)。

进入更多细节(也许这将有所帮助)窗口将显示的区域将需要没有边框的窗口,或标题,或最小化/关闭等的按钮..仅显示此内容窗口,它不会被调整大小但是固定,我有一个菜单,正如我之前所说,当点击一个不同的菜单项时,相关的窗口应该显示在固定区域。此外,如果显示此内容中的任何按钮或事件(例如,按钮导致显示不同的窗口),则固定区域中的内容应替换为此新窗口的内容

这是我第一次做这样的事情,从我读过的内容来看,听起来这对于WPF应用程序来说是非常棘手的,我希望我能得到某种洞察力或指导我应该如此我可以做到这一点。

感谢。

1 个答案:

答案 0 :(得分:2)

您可以尝试使用Extended WPF Toolkit Community Edition中的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();
        }
    }
}