У меня есть itemcontrol с шаблоном элемента, установленным на границу, а затем я связываю текст данных представления списка со списком объектов, которые содержат свойство bool.
Затем я добавил обработчик события click к границе, и при обнаружении щелчка я привел datacontext границы к классу и установил для поля bool значение true.
Это работает как шарм, но я хочу, чтобы у прямоугольника был определенный цвет, когда для поля bool установлено значение true или false, поэтому я создал IValueConverter, который принимает мой класс и возвращает цвет.
Это тоже работает, прямоугольники разных цветов в зависимости от поля bool.
Я все еще могу щелкнуть прямоугольники, но они просто не обновляются.
Цвет прямоугольника не изменится.
Таблица данных из элемента управления элемента
<DataTemplate>
<Border ToolTip="{Binding Seat.Column}" Width="25" Height="25" Margin="0,0,2,2" BorderBrush="Black" Background="{Binding Converter={StaticResource ResourceKey=SeatStateConverter}}" BorderThickness="2" Name="rectangle1" VerticalAlignment="Center" HorizontalAlignment="Center" MouseLeftButtonDown="rectangle1_MouseLeftButtonDown">
<Label Content="{Binding Occupied}" Foreground="White" FontSize="7"></Label>
</Border>
</DataTemplate>
Событие клика
private void rectangle1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
Border item = sender as Border;
SeatState state = item.DataContext as SeatState;
state.Locked = !state.Locked;
}
мой конвертер
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
SeatState state = value as SeatState;
if (state == null)
return null;
SolidColorBrush brush = new SolidColorBrush();
if (state.Occupied)
{
brush.Color = Color.FromRgb(172, 0,0);
}
else if (state.Locked)
{
brush.Color = Color.FromRgb(214, 65, 0);
}
else if(!state.Occupied)
{
brush.Color = Color.FromRgb(0, 172, 0);
}
return brush;
}
Это прекрасно работает ... пока я не добавлю конвертер, который преобразует объекты в SolidColorBrush.
Я перепробовал всякие сумасшедшие вещи, которые не должны иметь ничего общего с моей проблемой.
- реализация метода конвертации
в интерфейсе IValueConverter
- установка привязки к двусторонней привязке
- вызов UpdateLayout
метод на ItemsControl
Но, похоже, ничего не работает.
У кого-нибудь есть идеи?
Мой английский мог бы быть лучше, поэтому, пожалуйста, спросите, есть ли что-то, что вы хотите уточнить =)
Заранее спасибо.