gpt4 book ai didi

WPF 在选择时更改 ListboxItem 突出显示颜色

转载 作者:行者123 更新时间:2023-12-04 08:52:57 27 4
gpt4 key购买 nike

我在设置 HighlightBrushKey 时遇到问题的 SelectedItemListbox在 WPF 中。我的意图是根据代码中给定的 bool 值设置 Item 的颜色。

我试过以下步骤:

  • 实现转换器,检查 bool 值并返回正确的颜色。

    例子:
    <ribbon:RibbonWindow.Resources>
    <l:WindowControl x:Key="ListBoxItemBackgroundConverter" />
    <Style x:Key="listBoxStyle" TargetType="{x:Type ListBoxItem}">
    <Style.Resources>
    <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="{Binding Source={x:Static SystemColors.HighlightBrushKey}, Converter={StaticResource ListBoxItemBackgroundConverter}}"/>
    <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="{Binding Source={x:Static SystemColors.ControlBrushKey}, Converter={StaticResource ListBoxItemBackgroundConverter}}"/>
    </Style.Resources>
    </Style>
    </ribbon:RibbonWindow.Resources>

    这里的问题是 Convert 方法只被调用一次,但是每次我选择一个项目并检查 bool 值时,我都需要调用 Converter。类似于触发器,但带有“HighlightBrushKey”。

    转换器:
    public object Convert(object value, Type targetType,
    object parameter, CultureInfo culture)
    {
    if(currentField == null)
    return Brushes.Yellow;
    if (currentField.Save)
    return Brushes.LightGreen;
    else
    return Brushes.Yellow;
    }
  • 我的下一个想法是将“HighlightBrushKey”设置为“Transparent”并更改item.Background在代码中手动。这里的问题是我的项目变成了白色,并且看不到背景颜色

    例子:
    <ListBox.Resources>
    <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent" />
    <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black" />
    <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent" />
    </ListBox.Resources>

  • 提前致谢! :)

    最佳答案

    <Style x:Key="listBoxStyle" TargetType="{x:Type ListBox}">
    <Style.Resources>
    <!-- Background of selected item when focussed -->
    <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Red" />
    <!-- Background of selected item when not focussed -->
    <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Green" />
    </Style.Resources>
    </Style>

    <ListBox Style="{StaticResource listBoxStyle}">
    </ListBox>

    关于WPF 在选择时更改 ListboxItem 突出显示颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11152982/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com