0 / 0 / 0
Регистрация: 17.03.2019
Сообщений: 9
|
||||||||||||||||
1 | ||||||||||||||||
UWP Программное создание элемента XAML UWP MVVM17.03.2019, 10:15. Показов 5260. Ответов 4
До недавнего времени я думал, что умею пользоваться поиском. Однако ничего даже близко похожего я не нашел, поэтому и решил написать на форум. Очень нужна ваша помощь!
Программное создание элемента XAML в UWP:
Убедительная просьба расписать все очень и очень доходчиво. Что-то типа: "Тебе нужно создать свойство элемента в модели, затем это свойство передать команде, которая обработает... бла-бла-бла" Для новичка это пустой звук, если вы реально решили помочь, то, пожалуйста, объясните нормально, с кодом, с различными элементами. Мне нужно программно создать элемент XAML в UWP, затем использовать его. Например, создать панель, задать ей определенный стиль, размеры. Внутрь этой панели поместить текстблок, текстбокс, несколько кнопок. И все это чтобы создавалось по нажатию кнопки внутри основного грида на главной странице. Без MVVM это могло бы выглядеть так:
0
|
17.03.2019, 10:15 | |
Ответы с готовыми решениями:
4
UWP Xaml MvvmCross MVVM модель Программное создание Line по XAML шаблону [UWP] Статический ресурс XAML [UWP/MVVM] Привязка к изменению данных в классе ViewModel |
Модератор
|
|
17.03.2019, 17:01 | 2 |
Честно говоря не знаю насколько в этом плане (MVVM) отличны WPF и UWP.
Но в WPF, в принципе, не должны создаваться UI элементы в коде. В коде нежелательно, вообще, работать с UI элементами, в том числе и использовать обработчики событий. Желательно использовать команды вместо обработчиков.
0
|
0 / 0 / 0
Регистрация: 17.03.2019
Сообщений: 9
|
||||||
17.03.2019, 18:57 [ТС] | 3 | |||||
Это очень странно. Если они не должны создаваться в коде, то как пользователю по нажатию кнопки создать какую-то новую форму с элементами для ввода данных?
В примере выше, где я запихал все в событие кнопки, создается некоторая форма. Как же тогда сделать подобное, если элементы не должны создаваться в коде? В качестве примера могу привести пакет NuGet - Microsoft.Toolkit.Uwp.UI.Controls, в котором есть контрол - BladeView. В нем есть возможность создать именно такую панель, которая мне нужна. Но и там используются события, создается элемент UI в коде. Т.е. они делают неправильно?
0
|
1514 / 905 / 328
Регистрация: 17.05.2015
Сообщений: 3,417
|
|
17.03.2019, 19:45 | 4 |
HeavyI, нету простого способа. Вот например вы хотите динамически создавать кнопку.
Пишите шаблон, который будет определять расположение этих кнопок. Потом шаблон самой кнопки и определяете для нее вью модель. В основной вью модели создаете коллекцию вью моделей этих кнопок. Биндите Content Control на коллекцию этих вью моделей и задаете ему шаблон который создали в самом начале. Не знаю как насчет контент контрола в UWP, но все остальное справедливо и в WPF и в UWP. Вот тут пример для WPF MVVM и динамическое создание контролов
0
|
Модератор
|
|
17.03.2019, 20:45 | 5 |
Вы писали за патерн MVVM.
В нём ViewModel (и тем более Model) не обращаются к View. А UI элементы это, без вариантов, часть View. В самой View большую часть работы по созданию UI элементов возлагают на XAML. То есть есть какие-то определённые в XAML стили, шаблоны, привязки. И используя их по данным получаемым из ViewModel View создаёт UI элементы. В тех случаях когда XAML для создания UI элементов не хватает (особенно часто это бывает при создании UserControl, в т.ч. пример из NuGet приведённый Вами), то в View, конечно, можно использовать код C# для обращения к UI элементам или их создание. НО! Подчёркиваю, только в рамках View! Никакого управления UI элементам (как и, вообще, любой частью View) из ViewModel быть не должно! В Вашем же коде обработчик явно относится к реакции ViewModel на действия пользователя. То есть нужно использовать какой-то шаблон (или UC). К кнопке привязать через команду вызов метода VM. В этом вызове (напрямую или через Модель) установить какой-то флаг. По установке этого флага View визуализирует Ваш шаблон.
0
|
17.03.2019, 20:45 | |
17.03.2019, 20:45 | |
Помогаю со студенческими работами здесь
5
Динамическое добавления XAML по методу MVVM [UWP] XAML Прокрутка динамичных элементов внутри StackPanel через ScrollViewer Программное построение xaml файла Программное создание элемента управления Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |