【问题标题】:WPF custom control questionWPF自定义控件问题
【发布时间】:2011-01-25 08:26:05
【问题描述】:

我以前做过,但我找不到我的旧代码。

如何在窗口中嵌入窗口。

假设我创建了一个自定义表单并将其保存为 Window1.xaml,并希望将其嵌入到 Window2.xaml 中,而无需复制和粘贴 xaml 代码..TIA

编辑:我认为我的问题有些误导,我会改写它。

我有这个 Window1.xaml 我添加了自定义标题和背景图像/颜色。

然后在 Window2.xaml 中,我希望 Window1 成为自定义控件并将其嵌入此处。

不确定它的内容演示者是否仍在谷歌搜索答案:)

【问题讨论】:

    标签: wpf wpf-controls


    【解决方案1】:

    您不能在另一个 WPF 窗口中托管 WPF 窗口,但您可以将内容从一个窗口移动到另一个窗口:

    var window1 = new Window1();
    var window2 = new Window2();
    
    var content = window1.Content;
    window1.Content = null;
    window2.Content = content;
    

    请注意,您将 window1.Content 设置为 null 否则会出现异常,因为否则内容将具有可视父级。

    更新 看来您需要做的就是将Window1<Window></Window> 标记之间的所有XAML 复制到新的UserControl 中,然后将该用户控件托管在Window2 中。

    【讨论】:

      【解决方案2】:

      我认为在这种情况下您应该使用 Pages 或用户控件。通过这种方式,您可以导航到应用程序中定义的其他部件/页面/控件。 CodeKaizen 是对的,你不能在另一个窗口中托管一个窗口

      【讨论】:

        【解决方案3】:

        我不确定您是否可以这样做 - 但是,您不应将用户界面直接放入窗口中,而应使用普通控件(自定义或用户)并在您的窗口中重复使用。

        【讨论】:

        • 我认为它真的不是直接放置窗口,我希望它像一个自定义控件
        【解决方案4】:

        我知道你可以在后面的代码中做到这一点

        //Window you want to show
        Window1 child = new Window1(); 
        
        object content = child.Content;
        child.Content = null;
        
        //Where to show
        this.grid1.Children.Clear();    
        this.grid1.Children.Add((UIElement)content);
        

        希望有所帮助!

        【讨论】:

        • 不错,但您可以让这段代码更紧凑一些(将 content 声明为 UIElementvar,并且不需要 grid1)。
        【解决方案5】:

        听起来你真的想要一个 UserControl。将 Window1 的类型从 Window 更改为 UserControl,然后将该 UserControl 放入 Window2。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-10-26
          • 1970-01-01
          • 1970-01-01
          • 2010-12-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多