0

我的应用程序由一个带有各种视图模型的窗口组成,这些视图模型显示图形/图表/表格等。我的用户已经决定他们希望能够弹出一个图表并将其显示在自己的窗口中,类似于你可以如何拖动一个选项卡Chrome 或 Visual Studio 外的停靠视图,以在其自己的窗口中查看它。

我想避免生成视图模型的新实例以在新窗口中使用。

有没有办法在将视图模型从一个窗口移动到另一个窗口时保留它?有没有一种方法可以轻松地从一个可视化树中删除相应的视图并将其添加到另一个?

更新:

我查看了 AvalonDock,但它并不是我想要的。我只想将现有的视图模型从 UI 的一部分移动到窗口。有任何想法吗?

4

1 回答 1

0

我想避免生成视图模型的新实例以在新窗口中使用。

我想知道为什么会这样?无论如何,您可以通过以下方式实现它:

// App.xaml.cs
public static MainViewModel MainVM {
    get {
        // create and return main view model once
    }
}

// Classes
public class MainViewModel {

    private ViewModel1 vm1;
    public ViewModel1 VM1 {
        get {
            return vm1;
        }
    }

    public void InitializeViewModel1() {
        ...
    }
}

public class ViewModel1 {
    ...
}

尽管这适用于您的情况,但我建议您阅读有关拥有静态或单个视图模型实例的信息,并确定这是否是您仍要遵循的方法。

于 2015-09-10T06:08:34.963 回答