Редактировать: я изменил несколько вещей в своем бэкэнде и в своем xaml, но я не получаю ни один из моих стилей ..
<DataGrid
AutoGenerateColumns="False" Height="Auto"
Grid.Row="2" Grid.RowSpan="5"
HorizontalAlignment="Left"
VerticalAlignment="Top" Width="Auto"
Tag="Text"
ItemsSource="{Binding Nodes}"
IsSynchronizedWithCurrentItem="True"
x:Name="NodeDataGrid" Background="{Binding Color}">
<DataGrid.Columns>
<DataGridTextColumn Header="Node ID" Binding="{Binding NodeID}"></DataGridTextColumn>
<DataGridTextColumn Header="Status" Binding="{Binding Status}"></DataGridTextColumn>
<DataGridTextColumn Header="Temp" Binding="{Binding Temperature}">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<!--<Setter Property="Background" Value="White"/>
<Setter Property="Foreground" Value="Black"/>-->
<Style.Triggers>
<!--<DataTrigger Binding="{Binding Path=NodeColor, RelativeSource={RelativeSource Self}, Converter={StaticResource Conversion.RangeToBoolean}}" Value="True">
<Setter Property="Background" Value="LightBlue"/>
</DataTrigger>-->
<DataTrigger Binding="{Binding NodeColor}" Value="1">
<Setter Property="TextBlock.Background" Value="Red" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Damp" Binding="{Binding Dampness}"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
И в другом классе ..
public class RangeToBoolean : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return ((double)value) < 0.5;
}
}
И в моем NodeColorViewModel
private List<NodeColor> DetermineColor(List<NodeItem> nodes, List<NodeColor> nodeColor)
{
//SolidColorBrush myBrush = new SolidColorBrush(Colors.White);
foreach (var item in nodes)
{
NodeColor aNode = new NodeColor();
aNode.Color = 0;
if (item.Temperature >= 80.0)
{
//aNode.Color = new SolidColorBrush(Colors.LightSalmon);
aNode.Color = 1;
}
else if (item.Temperature < 20.0)
{
//aNode.Color = new SolidColorBrush(Colors.LightBlue);
aNode.Color = 2;
}
nodeColor.Add(aNode);
}
return nodeColor;
}
}
И в моем MainWindowViewModel
public MainWindowViewModel()
{
nodes = DetermineStatus(nodes);
var colors = DetermineColor(nodes, nodeColor);
var nodeColorViewModel = new List<NodeColorViewModel>();
foreach (var item in colors)
{
//nodes.ForEach(c => nodeViewModel.Add(new NodeItemViewModel(c)));
nodeColorViewModel.Add(new NodeColorViewModel(item));
}
NodeColor = nodeColorViewModel;
}
Моя цель - отображать красный фон только для определенных (выше 80 для температуры), пожалуйста, дайтеЯ знаю, если вы можете думать о проблеме.В данный момент отображается только стиль по умолчанию, почти как мой триггер отключен.