我在MVVM模式中有一个WPF datagrid和整数numericupdown。我的用户已经要求更改numericupdown,相应行的背景颜色也会更改。
我无法更改网格的SelectedIndex来进行突出显示。
答案 0 :(得分:0)
你走了:
<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可能会返回double
而不是int
,在这种情况下,您可能需要在转换器代码中将这两个值转换为相同的类型。