Xamarin Forms - получить пользовательский элемент управления (с помощью valueconverter?) - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть приложение Xamarin. У него есть страница. Эта страница имеет вид списка. Список просмотров привязан к исходному списку. Я хочу решить, какой пользовательский элемент управления использовать, основываясь на указанном свойстве c, которое есть у каждого элемента в списке. Как мне этого добиться?

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

Я попробовал следующее:

                <ContentView Content="{Binding IsPriority, Converter={StaticResource RoadIndicatorBackgroundValueConverter}}" ControlText="{Binding TowingOrder.Location.RoadIndicator}"></ContentView>

Это не сработает, потому что я могу ' • связать с ControlText указанного пользовательского элемента управления c.

enter image description here

Изображение выше показывает проблему. A1, A50 и синие значки - все пользовательские элементы управления, это не изображения. Есть еще некоторые из этих пользовательских элементов управления. Я не могу просто сделать 10 шаблонов данных правильно и скопировать и вставить все? Это было бы так много дублирующегося кода. Разве я не могу просто использовать базовый объект в табличке данных, связать свойство с конвертером и использовать переключатель / регистр, чтобы решить, какой пользовательский элемент управления вернуть?

1 Ответ

1 голос
/ 08 апреля 2020

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...