我正在通过不同线程(任务)的绑定来更新DataGrid。
我没有更新列值的问题。
<DataGridTextColumn Header="NAME" MinWidth="100" Width="10*" Binding="{Binding name}" />
但是我的一些列也应该具有来自数据库的不同背景颜色。我无法更新背景属性。
<DataGridTextColumn Header="" Width="10">
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="Background" Value="{Binding color}" />
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
我遇到了这个问题:
必须在与DependencyObject相同的线程上创建DependencySource
你能告诉我我需要做什么吗?
P.S。 Freeze()会有所帮助,但我认为这不是一种方法。
答案 0 :(得分:0)
所以我通过转换器来解决它。
我做了新课
public sealed class ColorCodeConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
...
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
...
}
}
然后在App.xaml中将其作为资源连接
<local:ColorCodeConverter x:Key="ColorCodeConverter" />
在MainWindow.xaml中我有以下
<DataGridTextColumn Header="" Width="10">
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="Background" Value="{Binding C7, Converter={StaticResource ColorCodeConverter}}" />
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
所以你只需要通过ViewModel绑定你的字符串即可。无需使用Freeze()等。