【问题标题】:UWP change style of selected ListViewItemUWP 更改所选 ListViewItem 的样式
【发布时间】:2017-07-11 20:02:23
【问题描述】:

我有一个列表视图。它不是动态的,我像这样在 XAML 中给它ListViewItem。在ListView 中很少有ListViewItems。 XAML 是这样的:

<ListView Name="ABC">
    <ListViewItem>
        <StackPanel>
            <BitmapIcon/>
            <TextBlock/>
        </StackPanel>
    </ListViewItem>

     <ListViewItem>
        <StackPanel>
            <BitmapIcon/>
            <TextBlock/>
        </StackPanel>
    </ListViewItem>

     <ListViewItem>
        <StackPanel>
            <BitmapIcon/>
            <TextBlock/>
        </StackPanel>
    </ListViewItem>
</ListView>

ListViewItem 被选中时,我想将ListViewItem 内的BitmapIconForeground 属性更改为其他值。我如何做到这一点。只要我能够更改 BitmapIcon 的 Foreground 属性,我愿意将 ListView 更改为更轻的控件,例如 ItemsControl

【问题讨论】:

  • 您是否动态创建列表?
  • 不,它是静态的,所有 ListViewItems 都在 XAML 本身中定义。只有4个ListViewItem

标签: xaml uwp


【解决方案1】:

这应该在ListViewItemStyle 内完成。您只需将SelectedForeground 更改为您喜欢的任何颜色。比如——

<Style x:Key="ListViewItemStyle1" TargetType="ListViewItem">
    <Setter Property="FontFamily" Value="{ThemeResource ContentControlThemeFontFamily}" />
    <Setter Property="FontSize" Value="{ThemeResource ControlContentThemeFontSize}" />
    <Setter Property="Background" Value="{ThemeResource ListViewItemBackground}" />
    <Setter Property="Foreground" Value="{ThemeResource ListViewItemForeground}" />
    <Setter Property="TabNavigation" Value="Local" />
    <Setter Property="IsHoldingEnabled" Value="True" />
    <Setter Property="Padding" Value="12,0,12,0" />
    <Setter Property="HorizontalContentAlignment" Value="Left" />
    <Setter Property="VerticalContentAlignment" Value="Center" />
    <Setter Property="MinWidth" Value="{ThemeResource ListViewItemMinWidth}" />
    <Setter Property="MinHeight" Value="{ThemeResource ListViewItemMinHeight}" />
    <Setter Property="AllowDrop" Value="False" />
    <Setter Property="UseSystemFocusVisuals" Value="True" />
    <Setter Property="FocusVisualMargin" Value="0" />
    <Setter Property="FocusVisualPrimaryBrush" Value="{ThemeResource ListViewItemFocusVisualPrimaryBrush}" />
    <Setter Property="FocusVisualPrimaryThickness" Value="2" />
    <Setter Property="FocusVisualSecondaryBrush" Value="{ThemeResource ListViewItemFocusVisualSecondaryBrush}" />
    <Setter Property="FocusVisualSecondaryThickness" Value="1" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="ListViewItem">
                <ListViewItemPresenter CheckBrush="{ThemeResource ListViewItemCheckBrush}"
                                       ContentMargin="{TemplateBinding Padding}"
                                       CheckMode="{ThemeResource ListViewItemCheckMode}"
                                       ContentTransitions="{TemplateBinding ContentTransitions}"
                                       CheckBoxBrush="{ThemeResource ListViewItemCheckBoxBrush}"
                                       DragForeground="{ThemeResource ListViewItemDragForeground}"
                                       DragOpacity="{ThemeResource ListViewItemDragThemeOpacity}"
                                       DragBackground="{ThemeResource ListViewItemDragBackground}"
                                       DisabledOpacity="{ThemeResource ListViewItemDisabledThemeOpacity}"
                                       FocusVisualPrimaryBrush="{TemplateBinding FocusVisualPrimaryBrush}"
                                       FocusVisualSecondaryThickness="{TemplateBinding FocusVisualSecondaryThickness}"
                                       FocusBorderBrush="{ThemeResource ListViewItemFocusBorderBrush}"
                                       FocusVisualMargin="{TemplateBinding FocusVisualMargin}"
                                       FocusVisualPrimaryThickness="{TemplateBinding FocusVisualPrimaryThickness}"
                                       FocusSecondaryBorderBrush="{ThemeResource ListViewItemFocusSecondaryBorderBrush}"
                                       FocusVisualSecondaryBrush="{TemplateBinding FocusVisualSecondaryBrush}"
                                       HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
                                       Control.IsTemplateFocusTarget="True"
                                       PointerOverForeground="{ThemeResource ListViewItemForegroundPointerOver}"
                                       PressedBackground="{ThemeResource ListViewItemBackgroundPressed}"
                                       PlaceholderBackground="{ThemeResource ListViewItemPlaceholderBackground}"
                                       PointerOverBackground="{ThemeResource ListViewItemBackgroundPointerOver}"
                                       ReorderHintOffset="{ThemeResource ListViewItemReorderHintThemeOffset}"
                                       SelectedPressedBackground="{ThemeResource ListViewItemBackgroundSelectedPressed}"
                                       SelectionCheckMarkVisualEnabled="{ThemeResource ListViewItemSelectionCheckMarkVisualEnabled}"
                                       SelectedForeground="LightBlue"
                                       SelectedPointerOverBackground="{ThemeResource ListViewItemBackgroundSelectedPointerOver}"
                                       SelectedBackground="{ThemeResource ListViewItemBackgroundSelected}"
                                       VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" />
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

只要您没有在BitmapIcon 上指定Foreground 属性,当ListViewItem 被选中时,它将自动获取更新的颜色(来自上述样式中的SelectedForeground)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    相关资源
    最近更新 更多