【发布时间】:2011-05-12 04:34:16
【问题描述】:
我正在尝试将选定ListViewItem 上的默认浅灰色突出显示更改为ListView 聚焦时显示的蓝色突出显示。我一直在尝试在线协调不同的 StackOverflow 答案和来源,但我还没有弄清楚我需要什么样的 XAML。我有以下内容:
<ListView ItemContainerStyle="{StaticResource checkableListViewItem}"
SelectionMode="Multiple"
View="{StaticResource fieldValueGridView}"/>
引用的View资源是:
<GridView x:Key="fieldValueGridView" AllowsColumnReorder="False">
<GridViewColumn Header="Field">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock FontWeight="Bold" Text="{Binding Path=DisplayName}"/>
<TextBlock FontWeight="Bold" Text=": "/>
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Value" DisplayMemberBinding="{Binding Path=FieldValue}"/>
</GridView>
而引用的ItemContainerStyle资源是:
<Style TargetType="ListViewItem" BasedOn="{StaticResource {x:Type ListViewItem}}"
x:Key="checkableListViewItem">
<Setter Property="IsSelected" Value="{Binding Path=IsChecked}" />
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="VerticalContentAlignment" Value="Top" />
</Style>
ListView 的 IsEnabled 属性确实会发生变化,如果这很重要的话。我想以某种方式合并 <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="{x:Static SystemColors.HighlightColor}"/> 或类似的东西,以突出显示在未集中注意力的 ListView 中的选定 ListViewItems。
我有以下风格,但这似乎不会影响我的ListView 中的ListViewItems,我认为我正在使用的GridView 可能是原因。当我尝试覆盖 Template 属性时,View 属性被忽略,所以我的 GridView 没有被显示。
<Style TargetType="ListViewItem">
<Style.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}"
Color="{x:Static SystemColors.HighlightColor}"/>
</Style.Resources>
</Style>
当ListView 没有焦点时,如何以蓝色突出显示ListView 中的选定项目?
【问题讨论】:
标签: wpf templates xaml listview gridview