Как закрыть пользовательский элемент управления из его модели представления
Я создал свой UserControl
как это:
MyUserCtrl myctrl = new MyUserCtrl() { DataContext = new MyViewModel()};
ControlCollection.Add(myctrl);
и я вывожу его используя это ItemsControl ItemsSource="{Binding ControlCollection}"
на вид.
Это чисто и красиво, но проблема в том, что я не знаю, как я могу закрыть эти UserControls
что я открыл.
А что если я просто уберу его в коллекцию. Таким образом модель представления тоже закроется?
1 ответ
Не назначайте коллекцию элементов пользовательского интерфейса для ItemsSource ItemsControl. Вместо этого поместите элемент пользовательского интерфейса в ItemsControl's ItemTemplate
и передать коллекцию экземпляров модели представления в ItemsSource.
<ItemsControl ItemsSource="{Binding MyItems}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<local:MyUserCtrl />
</DataTemplate>
</ItemsCControl.ItemTemplate>
</ItemsCControl>
Добавьте элемент модели представления в свойство коллекции в вашей "основной" модели представления:
var item = new MyViewModel();
MyItems.Add(item);
Чтобы "закрыть" элемент управления, удалите соответствующий элемент из коллекции:
MyItems.Remove(item);