Изменить цвет фона выбранного элемента списка UWP в Xamarin - PullRequest
0 голосов
/ 16 марта 2020

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

Вот что я пробовал:

Windows.UI.Xaml.Controls.ListView listView = (Windows.UI.Xaml.Controls.ListView)Control;
ListView elementListView = (ListView)Element;
var backgroundColor = elementListView.BackgroundColor.ToWindowsColor();
listView.Resources["SelectedBackground"] = new SolidColorBrush(backgroundColor);
listView.Resources["ListViewItemBackgroundSelected"] = new SolidColorBrush(backgroundColor);
listView.Resources["ListViewItemBackgroundSelectedPointerOver"] = new SolidColorBrush(backgroundColor);
listView.Resources["ListViewItemRevealBackgroundSelectedPressed"] = new SolidColorBrush(backgroundColor);
listView.Resources["ListViewItemSelectedBackgroundThemeBrush"] = new SolidColorBrush(backgroundColor);

Я не уверен, действительно ли какой-либо из этих ресурсов содержится в listView, потому что документация UWP по спискам не содержит раздела о ресурсах, как это делается для кнопок или других элементов управления.

Кто-нибудь имел успех с этим?

Редактировать

Я принял Cherry Bu - ответ MSFT ниже, так как это привело меня к обнаружению, что я могу использовать:

Windows.UI.Xaml.Controls.ListView listView = (Windows.UI.Xaml.Controls.ListView)Control;
ListView elementListView = (ListView)Element;
var backgroundColor = elementListView.BackgroundColor.ToWindowsColor();
listView.Resources["SystemControlHighlightListAccentLowBrush"] = new SolidColorBrush(backgroundColor);
listView.Resources["SystemControlHighlightListAccentMediumBrush"] = new SolidColorBrush(backgroundColor);

в действии. Это изменит только ресурс для списка, на который накладывается эффект, а не для всех списков в приложении.

Спасибо за помощь!

1 Ответ

0 голосов
/ 17 марта 2020

Если вы хотите изменить фон выбранных элементов ListView, более простой, но гораздо менее идеальный вариант - переопределить ресурс для всего приложения.

Если мы предоставим пользовательский SystemControlHighlightListAccentLowBru sh и SystemControlHighlightListAccentMediumBru sh, он переопределит или в случаях, когда используется этот Bru sh (даже включая другие контроль).

Для этого мы добавим go в файл App.xaml проекта UWP и добавим ресурс в словарь ресурсов приложения:

<Application
x:Class="uwp1.UWP.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:uwp1.UWP"
RequestedTheme="Light">
<Application.Resources>
    <SolidColorBrush x:Key="SystemControlHighlightListAccentLowBrush" Color="Red" />
    <SolidColorBrush x:Key="SystemControlHighlightListAccentMediumBrush" Color="Red" />
</Application.Resources>

This это скриншот:

enter image description here

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