Итак, я пытаюсь привязать фон элемента управления.Все работает нормально, но с последними спецификациями проекта я видел, что мне нужно изменить цвет фона в зависимости от двух значений.Значение second должно быть содержимым метки , которая указывает, какой цвет использовать .
В настоящее время используется преобразователь ячейки Battery (myConverter)
Элементом для привязки является цвет фона ячейки в Gridview.Код xaml выглядит так:
<DataGrid
Background="Transparent"
ItemsSource="{Binding Source={StaticResource Properties}, Path=TableData}"
AutoGenerateColumns="False"
IsReadOnly="True"
Name="Datatable"
VerticalScrollBarVisibility="Visible"
BorderThickness="0"
>
<DataGrid.Resources>
<Style BasedOn="{StaticResource {x:Type DataGridColumnHeader}}" TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="Background" Value="Transparent" />
<Setter Property="BorderThickness" Value="0"></Setter>
<Setter Property="HorizontalAlignment" Value="Center"></Setter>
</Style>
<Style TargetType="ScrollBar">
<Setter Property="Width" Value="15" />
<Setter Property="BorderThickness" Value="0"></Setter>
<Setter Property="Background" Value="Transparent"></Setter>
</Style>
</DataGrid.Resources>
<DataGrid.Columns >
<DataGridTextColumn Width="90" Header="ID" Binding="{Binding ID}"
>
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Foreground" Value="{Binding ID, Converter={StaticResource myIDConverter}}"></Setter>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Width="90" Header="Batterie" Binding="{Binding Battery}" >
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Background" Value="{Binding Battery, Converter={StaticResource myConverter}}"></Setter>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Width="90" Header="Current Use" Binding="{Binding CurrentUse}"></DataGridTextColumn>
<DataGridTextColumn Width="90" Header="Occupancy" Binding="{Binding Occupancy}">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Background" Value="{Binding Occupancy, Converter={StaticResource myConverter}}"></Setter>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
Код конвертера выглядит следующим образом:
public class BatteryConverter : IValueConverter, INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(String name)
{
if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(name));
}
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
SolidColorBrush clr;
if (int.Parse(value.ToString()) >= 80)
clr = new SolidColorBrush(Colors.Green);
else if (int.Parse(value.ToString()) >= 40)
clr = new SolidColorBrush(Colors.Orange);
else if (int.Parse(value.ToString()) >= 0)
clr = new SolidColorBrush(Colors.Red);
else
clr = new SolidColorBrush(Colors.White);
return clr;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return null;
}
}