绑定到datatable WPF的datagrid中的刷新样式

绑定到datatable WPF的datagrid中的刷新样式,wpf,datagrid,datatable,refresh,styles,Wpf,Datagrid,Datatable,Refresh,Styles,我有一个DataGrid绑定到DataTable,并且DataGrid有一个单元格样式,可以根据其值(正黑色或负红色)更改单元格中数字的前景。 当DataTable更新时,DataGrid会正确更新,因此绑定工作正常。 问题是样式仅在第一次加载DataGrid时应用。当绑定更新DataGrid时,如果负数变为正数,前景将保持红色,而不是变为黑色 我是否遗漏了什么东西,任何财产或事件 提前感谢。我不确定您是如何尝试这样做的。我已经尝试过任何方法,并且效果良好。请检查此代码并找出问题所在 Xaml:

我有一个
DataGrid
绑定到
DataTable
,并且
DataGrid
有一个单元格样式,可以根据其值(正黑色或负红色)更改单元格中数字的
前景。
当
DataTable
更新时,
DataGrid
会正确更新,因此绑定工作正常。 问题是
样式仅在第一次加载
DataGrid
时应用。当绑定更新
DataGrid
时,如果负数变为正数,
前景将保持红色,而不是变为黑色

我是否遗漏了什么东西,任何财产或事件


提前感谢。

我不确定您是如何尝试这样做的。我已经尝试过任何方法,并且效果良好。请检查此代码并找出问题所在

Xaml:

还有这个转换器

 class ValueToForegroundColorConverter : IValueConverter
{
    #region IValueConverter Members

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        SolidColorBrush brush = new SolidColorBrush(Colors.Black);
        int val = 0;
        int.TryParse(value.ToString(), out val);
        if (val < 0)
            brush = new SolidColorBrush(Colors.Red);
        return brush;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }

    #endregion
}
ForeGroundColorConverter的类值:IValueConverter { #区域转换器成员 公共对象转换(对象值、类型targetType、对象参数、System.Globalization.CultureInfo区域性) { SolidColorBrush笔刷=新的SolidColorBrush(Colors.Black); int-val=0; int.TryParse(value.ToString(),out val); if(val<0) 画笔=新的SolidColorBrush(颜色为红色); 回刷; } 公共对象转换回(对象值、类型targetType、对象参数、System.Globalization.CultureInfo区域性) { 抛出新的NotImplementedException(); } #端区 }
如果您提供一些重现问题的示例代码,我们将更容易为您提供答案是的……一些代码肯定会有帮助
 public partial class Window10 : Window,INotifyPropertyChanged
{  
    private DataTable source;
    public DataTable Source
    {
        get { return source; }
        set { source = value; OnPropertyChanged("Source"); }
    }
    public Window10()
    {
        InitializeComponent();
        this.DataContext = this;
    }
    #region INotifyPropertyChanged Members

    public event PropertyChangedEventHandler PropertyChanged;
    public void OnPropertyChanged(string name)
    {
        if(PropertyChanged!=null)
        PropertyChanged(this,new PropertyChangedEventArgs(name));
    }

    #endregion

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        Source.Rows.Add("-1");
    }

    private void StackPanel_Loaded(object sender, RoutedEventArgs e)
    {
        Source = new DataTable();
        Source.Columns.Add("Value");
        Source.Rows.Add("1");
    }
}
 class ValueToForegroundColorConverter : IValueConverter
{
    #region IValueConverter Members

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        SolidColorBrush brush = new SolidColorBrush(Colors.Black);
        int val = 0;
        int.TryParse(value.ToString(), out val);
        if (val < 0)
            brush = new SolidColorBrush(Colors.Red);
        return brush;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }

    #endregion
}