gpt4 book ai didi

c# - 更改绑定(bind)的 LongListSelector 或 Listbox 的项目颜色

转载 作者:太空宇宙 更新时间:2023-11-03 16:39:04 24 4
gpt4 key购买 nike

我一直在尝试更改 ListBox 中的 TextBlock 的颜色,该颜色从绑定(bind)中获取。

<TextBlock Text="{Binding Title}" TextWrapping="Wrap" Foreground="{Binding ItemColor, Converter={StaticResource ColorConverter}}" Style="{StaticResource posttitle}" d:LayoutOverrides="Width"/>

这是在初始渲染期间工作的转换器:

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null)
return new SolidColorBrush(Colors.Red);

Color colorValue = (Color)value;

return new SolidColorBrush(colorValue);
}

在 SelectionChanged 事件期间,我为项目分配了一种新颜色,如下所示:

private void List_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var listbox = (LongListSelector)sender;

if (listbox.SelectedItem == null)
return;

MyItem item = (MyItem)listbox.SelectedItem;

if (item.Clicked)
{
// Change some value
item.Clicked = true;
item.ItemColor = new Color() { A = 0xFF, R = 0xBD, G = 0xB7, B = 0x6B };
}
}

如果我设置断点并检查数据上下文,我可以看到源中的值已更改,但从视觉上看,LongListSelector 的外观没有改变。绑定(bind)到 ObservableCollection 并且 ItemColor 会通知更改。

感谢任何帮助。

最佳答案

您没有提供足够的信息,但是根据您提供的代码,看起来当 item.ItemColor 被设置时,ItemColor 的 PropertyChanged 事件没有被被解雇了。

MyItem 应该实现 INotifyPropertyChanged 并调用 PropertyChanged(this, new PropertyChangedEventArgs("ItemColor"))

关于c# - 更改绑定(bind)的 LongListSelector 或 Listbox 的项目颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8202896/

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