如何更改 numericupdown 中引用的特定数据网格行的颜色
How do I changed the color of a specific datagrid row referenced in a numericupdown
我在 MVVM 模式中有一个 WPF 数据网格和整数 numericupdown。我的用户要求随着 numericupdown 的改变,相应行的背景颜色也改变了。
我无法更改网格的 SelectedIndex 来突出显示。
给你:
<DataGrid AlternationCount="{x:Static system:Int32.MaxValue}">
<DataGrid.Resources>
<wpfApplication2:EqualsMultiConverter x:Key="EqualsMultiConverter" />
</DataGrid.Resources>
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<DataTrigger Value="True">
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource EqualsMultiConverter}">
<Binding Path="(ItemsControl.AlternationIndex)" RelativeSource="{RelativeSource Self}" />
<Binding Path="ViewModelPropertyBoundToNumericUpDown" />
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="Background" Value="#CCC" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
</DataGrid>
基本上,我们将交替索引设置为足够大的数字,使其成为行号。然后我们使用这个转换器将它与数字中的数字进行比较:
public class EqualsMultiConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
return Equals(values[0], values[1]);
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
请注意,也许 NumericUpDown returns double
而不是 int
,在这种情况下,您可能需要在转换器代码中将这两个值转换为相同的类型。
我在 MVVM 模式中有一个 WPF 数据网格和整数 numericupdown。我的用户要求随着 numericupdown 的改变,相应行的背景颜色也改变了。
我无法更改网格的 SelectedIndex 来突出显示。
给你:
<DataGrid AlternationCount="{x:Static system:Int32.MaxValue}">
<DataGrid.Resources>
<wpfApplication2:EqualsMultiConverter x:Key="EqualsMultiConverter" />
</DataGrid.Resources>
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<DataTrigger Value="True">
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource EqualsMultiConverter}">
<Binding Path="(ItemsControl.AlternationIndex)" RelativeSource="{RelativeSource Self}" />
<Binding Path="ViewModelPropertyBoundToNumericUpDown" />
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="Background" Value="#CCC" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
</DataGrid>
基本上,我们将交替索引设置为足够大的数字,使其成为行号。然后我们使用这个转换器将它与数字中的数字进行比较:
public class EqualsMultiConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
return Equals(values[0], values[1]);
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
请注意,也许 NumericUpDown returns double
而不是 int
,在这种情况下,您可能需要在转换器代码中将这两个值转换为相同的类型。