https://docs.microsoft.com/en-us/windows/communitytoolkit/extensions/listviewbase
В вышеприведенной статье рассказывается о вкусности WCT, которая позволяет динамически изменять шаблон для элемента, который должен быть визуализирован. Этот конкретный пример представляет собой статически выраженное расширение, которое просто работает как свойство, присоединенное к списку, и циклически перебирает два разных шаблона
Но вы можете легко расширить ListView в шаблонный элемент управления, а затем упростить доступ к Viewmodel, в котором находится ваш Itemsource, и затем вы можете изменить
private static void ItemTemplateContainerContentChanging(Windows.UI.Xaml.Controls.ListViewBase sender, ContainerContentChangingEventArgs args)
где происходит вся магия.
Обозначение для реализации
Примечание 0:
если вы не знаете mvvm и связывание, забудьте, что вы когда-либо читали это, и изучайте его.
Примечание 1:
Все дочерние элементы управления, которые не имеют явно определенного контекста данных, наследуют своих родителей.
Примечание 2:
Вы сможете отобразить входящие элементы управления в вышеупомянутой функции, отслеживая входящие args.ItemIndex, а затем перекрестно проверяя его с помощью связанного источника (список наблюдаемых и т. Д.), Который размещен в базовом текстовом канале данных.
Примечание 3:
Чтобы преобразовать это в шаблонный / настраиваемый элемент управления, вам придется в значительной степени создать собственную реализацию ListView, например, MyListview: ListView
Свойства зависимости должны быть преобразованы в обычные,
просто введите «propdp» и дважды нажмите «Tab», чтобы открыть шаблон по умолчанию.
Вам все равно придется ссылаться на все различные DataTamplates из XAML, как показано в приведенном ниже демонстрационном приложении.
Примечание 4:
Снимите ослабление, например, код витрины, направление растяжения и полоски зебры не нужны в вашем случае.
https://github.com/windows-toolkit/WindowsCommunityToolkit/blob/master/Microsoft.Toolkit.Uwp.UI/Extensions/ListViewBase/ListViewExtensions.cs
это точное местоположение фрагмента кода, о котором я говорил, чтобы проверить его в действии и поиграть с ним, загрузите «Windows Community Toolkit» из магазина, он находится в разделе «Расширения».