我需要通过Xamarin的效果来移除列表视图的选定背景颜色。我发现列表视图包含通过此link的资源,但我还无法通过效果中的控件访问这些资源。
以下是我尝试过的:
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中是否真的包含这些资源,因为关于listview的UWP文档不像Buttons或其他控件那样包含有关资源的部分。
有人成功了吗?
编辑
我已经接受了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条答案
按热度按时间kpbwa7wx1#
如果要更改ListView选定项的背景,更简单但不太理想的选择是以应用程序范围的方式重写资源。
如果我们提供一个自定义的SystemControlHighlightListAccentLowBrush和SystemControlHighlightListAccentMediumBrush,它会覆盖或使用此Brush的示例(甚至包括其他控件)。
为此,我们将转到UWP项目的App.xaml文件,并在Application的资源字典中添加一个资源:
这是截图: