绑定到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
}