我这样创建了UserControl
:
MyUserCtrl myctrl = new MyUserCtrl() { DataContext = new MyViewModel()};
ControlCollection.Add(myctrl);
,然后我使用此ItemsControl ItemsSource="{Binding ControlCollection}"
将其输出到视图。
这很干净而且很好,但是问题是我不知道如何关闭我打开的UserControls
。
如果我只是将其删除到集合中,该怎么办。这样,视图模型也会关闭吗?
答案 0 :(得分:3)
不要将UI元素的集合分配给ItemsControl的ItemsSource。而是将UI元素放在ItemsControl的CSS
中,并将视图模型实例的集合传递给ItemsSource。
ItemTemplate
在“主”视图模型的集合属性中添加视图模型项:
<ItemsControl ItemsSource="{Binding MyItems}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<local:MyUserCtrl />
</DataTemplate>
</ItemsCControl.ItemTemplate>
</ItemsCControl>
要“关闭”控件,请从集合中删除相应的项:
var item = new MyViewModel();
MyItems.Add(item);