Я пытался изменить цвет TextBlock
в ListBox
, который получает цвет от привязки.
<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
не меняет внешний вид. Привязка к ObservableCollection
и ItemColor
уведомляет об изменении.
Любая помощь приветствуется.