以MVVM安全的方式移动WPF元素(UserControl)到新窗口

本文关键字:UserControl 新窗口 窗口 元素 安全 MVVM 方式 WPF 移动 | 更新日期: 2023-09-27 17:54:39

我在这里问了一个奇怪的问题,我明白了。但是我遇到过一个场景,如果有一个"弹出到新窗口"的功能可能会很酷。但是用户当时与之交互的UI技术上是一个DataTemplate,它只是我使用了UserControl作为模板。

我想做的是只是弹出UserControl到一个新的窗口(不创建一个新的)。但是,如果创建了一个新的UI,并且不是过于繁琐,那么绑定规则无论如何都应该创建一个相同的界面。

我的第一个想法是简单地把项目从视图模型的集合,并插入到一个新的,这是我认为一个新的UI将被创建,第一个问题是,然后我现在也要写一个窗口管理器?

如果可能的话,看看有什么意见和想法可以处理这种情况。

p。如果可能的话,我真的希望避免挖掘可视化树,但我并不反对编写附加行为之类的东西。我只是不确定从哪里开始,什么是"最好"的方法,谷歌没有出现任何与我的需求相关的东西,哈哈。

谢谢。

以MVVM安全的方式移动WPF元素(UserControl)到新窗口

我经常将XAML的部分从较大的控件移到较小的控件中,这与将控件移到另一个窗口具有相同的基本要求。只要窗口的DataContext是正确的,那么控件中的绑定应该仍然可以工作。

你是不是想太多了?

using System.Windows;
namespace WpfApplication1
{
    public partial class MyWindow : Window
    {
        // private, See Execute() instead
        MyWindow() {
            InitializeComponent();
        }
        static public void Execute(MyViewModel vm)
        {
            MyWindow Window = new MyWindow() {
                DataContext = vm
            };
            Window.ShowDialog();
        }
    }
}