在 WPF MVVM 中添加多个用户控件的最佳控件?
Posted
技术标签:
【中文标题】在 WPF MVVM 中添加多个用户控件的最佳控件?【英文标题】:Best Control to add Multiple UserControl in WPF MVVM? 【发布时间】:2012-04-28 18:41:56 【问题描述】:我有一个主窗口,我想在其中添加我的其他视图。 用户可以在主窗口中打开多个不同的视图。
所以对于添加所有这些 Views(UserControls),这是最好的控件。
目前我正在使用 Canvas,但它不支持 MVVM。
那么如何添加多个控件。
这就是我到目前为止所做的事情
注意: 该控件应该同时托管多个 UserControl 我应该能够在该控件中在这里和那里拖动一个 UserControl,然后单击 UserControl 应该将它带到 Front(Focused),这是我在 Canvas 中使用 ZIndex 所做的。
【问题讨论】:
这是views
esclusive 吗?我的意思是,如果我看到一个视图,我还能看到其他视图吗?
是的,使用应该能够查看该控件中的所有视图
画布看起来应该可以工作。不支持MVVM是什么意思?
我正在寻找更好的解决方案..
@KishoreJangid 不错的窗口风格,有没有可能得到那种风格?
【参考方案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>
我想你已经有了画布解决方案。
【讨论】:
感谢我已经在使用 cuaton 可拖动画布。但我的问题是我无法添加来自不同视图模型的孩子。以上是关于在 WPF MVVM 中添加多个用户控件的最佳控件?的主要内容,如果未能解决你的问题,请参考以下文章
WPF MVVM Lights - 具有不同参数的相同用户控件