如何从其视图模型关闭用户控件

时间:2018-11-12 18:41:20

标签: c# wpf mvvm caliburn.micro dynamic-usercontrols

我这样创建了UserControl

MyUserCtrl myctrl = new MyUserCtrl() { DataContext = new MyViewModel()};
ControlCollection.Add(myctrl);

,然后我使用此ItemsControl ItemsSource="{Binding ControlCollection}"将其输出到视图。

这很干净而且很好,但是问题是我不知道如何关闭我打开的UserControls

如果我只是将其删除到集合中,该怎么办。这样,视图模型也会关闭吗?

1 个答案:

答案 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);