Как закрыть пользовательский элемент управления из его модели представления - PullRequest
0 голосов
/ 12 ноября 2018

Я создал свой UserControl так:

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

и я вывожу это, используя ItemsControl ItemsSource="{Binding ControlCollection}" для просмотра.

Это чисто и красиво, но проблема в том, что я не знаю, как мне закрыть те UserControls, которые я открыл.

А что, если я просто уберу его в коллекцию. Таким образом, модель представления тоже закроется?

1 Ответ

0 голосов
/ 12 ноября 2018

Не назначайте коллекцию элементов пользовательского интерфейса для ItemsSource ItemsControl. Вместо этого поместите элемент пользовательского интерфейса в ItemsControl 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...