c# WPF主窗口中的子窗口

本文关键字:窗口 WPF | 更新日期: 2023-09-27 17:50:31

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

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

这是我第一次做这样的事情,从我所读到的,听起来这是一个非常棘手的WPF应用程序,我希望我能得到一些我应该去的见解或方向,这样我就可以使这成为可能。

谢谢。

c# WPF主窗口中的子窗口

您可以从扩展WPF工具包社区版中尝试例如ChildWindow。

编辑# 1:

但每当我尝试创建一个窗口容器在Xaml它有使用"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.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();
        }
    }
}