Как создать экземпляр View из ViewModel, даже если я не хочу отображать его сразу после? - PullRequest
0 голосов
/ 28 мая 2019

Я хочу выполнить поиск по элементам управления нескольких представлений, но у меня есть доступ только к их моделям представления, потому что эти представления не отображаются и нет живого экземпляра представления.Есть ли способ создать экземпляр View через его ViewModel в коде?Я должен создать несколько экземпляров в одном месте, имея только тип VM.Я хотел бы, чтобы код был общим.

Редактировать - более конкретная информация: у меня много разных настроек просмотра.Я хочу искать их, потому что прямо сейчас пользователь должен искать вручную - это означает, что пользователь должен перейти на каждую вкладку и найти нужное ему слово.Моя виртуальная машина, конечно, берет данные из входных данных, но меня не интересуют данные - меня интересуют метки и тексты, которые показываются пользователю.

Я использую WPF, MVVM и Caliburn.Micro.

1 Ответ

0 голосов
/ 28 мая 2019

Да, вы можете сделать это. Вам нужно понимать, что представления также являются классом, поэтому вам просто нужно создать объект, как любой другой класс, и когда вы вызываете ShowDialog. вызов метода в представлении будет отображаться в интерфейсе пользователя

View MyView= new View();
ViewModel MyViewmodel= new ViewModel();
MyView.DataContext=MyViewmodel;

В этой части кода он создаст объект View и ViewModel и назначит dataContext Prop вашему Vm, но не будет отображаться в любом месте.

List<View> AllView= new List<View>()
AllView.Add(MyView);

Здесь я сохранил ваше представление в списке. и они могут быть статическими или глобальными. и всякий раз, когда мне нужно получить к ним доступ, я буду делать

AllView[0].ShowDialog();

Я показываю первый вид. Я думаю, у тебя есть идея. согласно универсальному методу вы можете проверить его создание объекта. это не так сложно. по мне это не нужно.

...