Добавить/удалить пользовательский элемент управления в элементе панорамы с помощью MVVM — Windows Phone

У меня есть приложение панорамы, в котором пока есть два элемента панорамы: «последние» и «популярные». Они заполняются данными с использованием привязки из модели представления. Я хотел бы добавить третий («поиск») элемент панорамы, который изначально показывает только текстовое поле и кнопку.

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

Я не могу найти примеров того, как это сделать с помощью шаблона MVVM. Я не использую инфраструктуру MVVM и не хотел бы этого делать, поскольку я только изучаю все это.

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

Искренне,

Камаль


person Kamal    schedule 14.12.2012    source источник


Ответы (2)


Обычно для чего-то подобного у вас будет свойство в ViewModel, которое укажет представлению, что показывать. У вас есть много разных вариантов того, как вы могли бы это сделать.

Одним из вариантов было бы иметь свойство «Результаты», к которому привязан ваш список. Поместите текстовое поле и кнопку в сетку и привяжите свойство «Видимость» сетки к свойству «Видимый», если нет результатов и не видны, если они есть.

Много разных способов сделать это.

Примеры здесь и здесь.

person Bryant    schedule 14.12.2012
comment
Привет Брайант, спасибо за информацию. У вас есть конкретные примеры Windows Phone. Я новичок в этом, и мне трудно выделить ключевую информацию, которая мне нужна, из примеров по ссылкам, которые вы предоставили. Одна проблема, с которой я столкнулся сразу после примера, заключается в том, что я получаю свойство «Содержимое» установлено более одного раза. ошибка при попытке использовать два разных пользовательских элемента управления в одном элементе панорамы. - person Kamal; 15.12.2012

Вероятно, вы могли бы привязать список пользовательского класса к объекту панорамы. Пользовательский класс содержит заголовок и/или описание и класс страницы.

Вы можете поддерживать свои представления в своей основной модели представления.

Другим решением было бы добавление элементов в xaml и использование одной и той же модели представления для всего элемента управления панорамой. С помощью свойства вы можете контролировать видимость каждого элемента.

Как сказал Брайант: есть так много решений. Это зависит от вашего приложения и требований... :)

person Johannes Wanzek    schedule 14.12.2012