【问题标题】:C# WPF Child Windows inside Main Window主窗口内的 C# WPF 子窗口
【发布时间】:2015-08-05 02:29:56
【问题描述】:

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

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

这是我第一次做这样的事情,从我读到的内容看来,这对于 WPF 应用程序来说是一件非常棘手的事情,我希望我能得到一些我应该去的见解或方向我可以让这成为可能。

谢谢。

【问题讨论】:

  • 我被否决了,因为我在寻求帮助?人不是很好

标签: c# wpf windows menu mdi


【解决方案1】:

例如,您可以尝试扩展 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();
        }
    }
}

【讨论】:

  • 这看起来像是我绝对可以使用的东西 :) 但是每当我尝试在 Xaml 中创建一个 WindowContainer 时,它都会遇到带有“”的命名空间前缀问题,所以我该如何创建适当的命名空间前缀来使用它?我问是因为文档没有举例说明如何做到这一点 T.T
  • 好的,所以引用的所有内容仍然给我错误..即使它说它在那里:puu.sh/hXtEx/d98ec5e4dc.png....它仍然给我这个错误:puu.sh/hXtFD/2b097c443e.png..不是确定要做什么:S
  • 在看到您再次发布此内容之前,我一直在环顾四周,并一直在尝试使用 UserControls 使其工作......这会是一个更好/更简单的解决方案吗?或者它不提供这些库提供的功能。
  • 是的,在我专门添加了那个之后立即起作用了..感谢您的所有帮助^.^
  • 现在我有这部分工作,它正在显示子窗口..我现在正在做的是试图显示我的其他窗口的内容..到目前为止我用 Window1 win = 创建一个实例新窗口1(); chWindow.Content = win.Content;这是一个好的实现吗?还是有更好的方法来做到这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-24
  • 2018-11-10
  • 1970-01-01
  • 2014-03-14
  • 1970-01-01
  • 2011-10-19
  • 1970-01-01
相关资源
最近更新 更多