C# 使用WPF C更改数据网格颜色时出现的问题#
我正在使用datagrid并根据行的条件更改行的颜色,我正在以编程方式执行此操作。 仿效 由于我的datagrid绑定到datatable,我直接从datatable加载信息C# 使用WPF C更改数据网格颜色时出现的问题#,c#,wpf,datagrid,wpfdatagrid,C#,Wpf,Datagrid,Wpfdatagrid,我正在使用datagrid并根据行的条件更改行的颜色,我正在以编程方式执行此操作。 仿效 由于我的datagrid绑定到datatable,我直接从datatable加载信息 private void UpdateCor () { gvDados.UpdateLayout (); for (int i = 0; i <dt.Rows.Count; i ++) { var rowContext = (DataGridRow) gvDados.ItemContain
private void UpdateCor () {
gvDados.UpdateLayout ();
for (int i = 0; i <dt.Rows.Count; i ++)
{
var rowContext = (DataGridRow)
gvDados.ItemContainerGenerator.ContainerFromIndex (i);
if (rowContext! = null)
{
if (dt.Rows [i] ["situation"]. ToString (). Equals (1))
rowContext.Background = Brushes.Green;
else
rowContext.Background = Brushes.Red;
}
}
}
private void UpdateCor(){
gvDados.UpdateLayout();
对于(inti=0;i这是一个类似于的问题。
可以使用datatrigger执行以下操作:
<DataGrid ItemsSource="{Binding YourItemsSource}">
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Style.Triggers>
<DataTrigger Binding="{Binding State}" Value="State1">
<Setter Property="Background" Value="Red"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding State}" Value="State2">
<Setter Property="Background" Value="Green"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
</DataGrid>
这是一个类似于的问题。
可以使用datatrigger执行以下操作:
<DataGrid ItemsSource="{Binding YourItemsSource}">
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Style.Triggers>
<DataTrigger Binding="{Binding State}" Value="State1">
<Setter Property="Background" Value="Red"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding State}" Value="State2">
<Setter Property="Background" Value="Green"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
</DataGrid>
通常,XAML过于简单,无法表示更复杂的条件。我更喜欢将哪些值应使用哪些颜色的逻辑放入转换器中。这将导致更简单的XAML和C#中转换器更大的灵活性
格式化WPF Datagrid的各个部分是出了名的困难,Microsoft没有提供必要的信息如何进行。请阅读我的文章以更好地理解如何轻松地进行格式化。通常,XAML过于简单,无法表达更复杂的条件。我更喜欢将逻辑放在哪些值应使用哪些颜色上这使得C#中的转换器具有更简单的XAML和更大的灵活性
格式化WPF数据网格的各个部分是出了名的困难,而Microsoft没有提供必要的信息来进行格式化。请阅读我的文章以更好地理解如何轻松地进行格式化。此链接:可能会对您有所帮助。可能只需要将setter设置为背景色。这是因为虚拟化。您正在尝试o是一个非常糟糕的主意,可能无法正常工作。您应该在XAML中使用样式和触发器来完成此操作。有很多关于堆栈溢出的示例。但是使用Google进行搜索;这里的搜索功能不是很好。此链接:可能会帮助您。可能只需要将setter设置为背景色这是因为虚拟化。您正在尝试的是ng to do是一个非常糟糕的主意,可能无法正常工作。您应该在XAML中使用样式和触发器来执行此操作。有许多关于堆栈溢出的示例。但是使用Google进行搜索;这里的搜索功能不是很好。
class ValueToBackgroundConverter: IValueConverter {
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) {
if (value is int) {
int quantity = (int)value;
if (quantity>=100) return Brushes.White;
if (quantity>=10) return Brushes.WhiteSmoke;
if (quantity>=0) return Brushes.LightGray;
return Brushes.White; //quantity should not be below 0
}
//value is not an integer. Do not throw an exception
// in the converter, but return something that is obviously wrong
return Brushes.Yellow;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) {
throw new NotImplementedException();
}
}