Как изменить цвет заполнителя ListViewItem в UWP?
Для своего приложения UWP я использую виртуализацию данных с произвольным доступом с помощью ListView. Моя проблема в том, что для содержимого этого конкретного ListView заполнители должны быть белыми. В документации в разделе "Замечания" указан ключ ресурса ListViewItemPlaceholderBackground, однако я не могу понять, как его переопределить.
Я попытался реализовать ресурс стиля для моего UserControl:
Мой UserControl
<UserControl
x:Class="SimplePdfViewer.SimplePdfViewerControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:SimplePdfViewer"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Unloaded="root_Unloaded"
x:Name="root">
<Grid>
<!--ScrollViewer.VerticalScrollBarVisibility="Hidden"-->
<!--ScrollViewer.ZoomMode="Disabled"-->
<ListView x:Name="PdfListView" ItemsSource="{x:Bind DocumentDataSource}" ScrollViewer.ZoomMode="Enabled" ScrollViewer.IsScrollInertiaEnabled="True">
<ListView.ItemTemplate>
<DataTemplate x:DataType="BitmapImage">
<ListViewItem Height="1200">
<Image Source="{x:Bind}"/>
</ListViewItem>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
</UserControl>
Добавлен стиль ресурса
<UserControl
x:Class="SimplePdfViewer.SimplePdfViewerControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:SimplePdfViewer"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Unloaded="root_Unloaded"
x:Name="root">
<UserControl.Resources>
<Style TargetType="ListViewItem" x:Name="ListViewItemEdit">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListViewItem">
<ListViewItemPresenter ContentTransitions="{TemplateBinding ContentTransitions}"
PlaceholderBackground="White"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources>
<Grid>
<!--ScrollViewer.VerticalScrollBarVisibility="Hidden"-->
<!--ScrollViewer.ZoomMode="Disabled"-->
<ListView x:Name="PdfListView" ItemsSource="{x:Bind DocumentDataSource}" ScrollViewer.ZoomMode="Enabled" ScrollViewer.IsScrollInertiaEnabled="True">
<ListView.ItemTemplate>
<DataTemplate x:DataType="BitmapImage">
<ListViewItem Height="1200" Style="{StaticResource ListViewItemEdit}">
<Image Source="{x:Bind}"/>
</ListViewItem>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
</UserControl>
Я не нашел ничего полезного в Интернете; надеюсь, кто-то может мне помочь.
Приветствия.
1 ответ
Вместо x:Name
использование x:Key
в стиле, а затем ссылаться на него из ItemContainerTemplate
собственность ListView
:
<ListView ... ItemContainerTemplate="{StaticResource ListViewItemEdit}">
Однако, если вы сделаете это так, у вас будет только частичная функциональность в ItemContainerTemplate
что не то, что вы хотите. Я бы скопировал и вставил полный Style
из документов здесь, а затем отредактируйте цвет там. Или же вы можете просто предоставить собственную версию кисти и вообще не редактировать контейнер. Просто удалите стиль и добавьте это вместо:
<UserControl.Resources>
<SolidColorBrush Color="Blue" x:Key="ListViewItemPlaceholderBackgroundThemeBrush" />
</UserControl.Resources>
Это должно переопределить цвет системы по умолчанию для этого элемента управления.