如何更改 UWP 中的 ListViewItem 占位符颜色?
How to change ListViewItem placeholder color in UWP?
对于我的 UWP 应用程序,我在备注下使用 Random access data virtualization with a ListView. My problem is, that for the content for this particular ListView the placeholders need to be white. In the documentation 似乎资源键 ListViewItemPlaceholderBackground,但是我不知道如何覆盖它。
我已尝试为我的 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>
我没有在网上找到任何有用的东西;希望有人能帮助我。
干杯。
在样式中使用 x:Key
而不是 x:Name
,然后从 ListView
:
的 ItemContainerTemplate
属性 引用它
<ListView ... ItemContainerTemplate="{StaticResource ListViewItemEdit}">
但是,如果您这样做,您将只有 ItemContainerTemplate
中的部分功能,这不是您想要的。我会从 docs here 复制并粘贴完整的 Style
,然后在那里编辑颜色。或者,您可以只提供自定义版本的画笔,根本不编辑容器。只需删除样式并添加此样式即可:
<UserControl.Resources>
<SolidColorBrush Color="Blue" x:Key="ListViewItemPlaceholderBackgroundThemeBrush" />
</UserControl.Resources>
这应该覆盖该控件的系统默认颜色。
对于我的 UWP 应用程序,我在备注下使用 Random access data virtualization with a ListView. My problem is, that for the content for this particular ListView the placeholders need to be white. In the documentation 似乎资源键 ListViewItemPlaceholderBackground,但是我不知道如何覆盖它。
我已尝试为我的 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>
我没有在网上找到任何有用的东西;希望有人能帮助我。
干杯。
在样式中使用 x:Key
而不是 x:Name
,然后从 ListView
:
ItemContainerTemplate
属性 引用它
<ListView ... ItemContainerTemplate="{StaticResource ListViewItemEdit}">
但是,如果您这样做,您将只有 ItemContainerTemplate
中的部分功能,这不是您想要的。我会从 docs here 复制并粘贴完整的 Style
,然后在那里编辑颜色。或者,您可以只提供自定义版本的画笔,根本不编辑容器。只需删除样式并添加此样式即可:
<UserControl.Resources>
<SolidColorBrush Color="Blue" x:Key="ListViewItemPlaceholderBackgroundThemeBrush" />
</UserControl.Resources>
这应该覆盖该控件的系统默认颜色。