在WPF MVVM中添加多个UserControl的最佳控件?

时间:2012-04-28 18:41:57

标签: c# wpf mvvm views

我有一个MainWindow,我想在其中添加我的其他视图。 用户可以向MainWindow打开Mutliple数量的不同视图。

所以添加所有那些视图(UserControls),这是最好的控件。

目前我正在使用Canvas,但它不支持MVVM。

那么如何添加多个控件呢。

这是我到目前为止所做的事情

enter image description here

注意: 控件应该同时托管多个UserControl,我应该能够在该控件中拖动One UserControl,然后单击UserControl,将其带到Front(Focused),我在Canvas中使用ZIndex进行。

1 个答案:

答案 0 :(得分:1)

正确的MVVM解决方案很可能是使用ItemsControl类并将视图模型的集合绑定为ItemsSource。

在ItemsControl的DataTemplate中,我会为子视图模型指定正确的视图(在你的情况下为工具窗口排序)。

<ItemsControl.ItemTemplate>
    <DataTemplate>
        <views:ToolWindow DataContext={Binding} />
    </DataTemplate>
</ItemsControl.ItemTemplate>

为了实现像你的图片一样的窗口行为,我会指定基于Canvas的自定义面板,这将允许拖放行为。

<ItemsControl.ItemsPanel>
    <ItemsPanelTemplate>
        <panels:MyCustomMdiPanel />
    </ItemsPanelTemplate>
<ItemsControl.ItemsPanel>

我想你已经在使用画布解决方案了。