我有一个Combobox和一个DataGrid。我希望能够在Combobox中选择一个值(SelectedItem是数据绑定到ViewModel的属性)。如果DataGrid中特定列的单元格值与组合框值匹配,我想更改整行的边框颜色。我已经找到了使用转换器更改DataGrid边框颜色的方法,但ConverterParameter无法绑定到SelectedItem属性,因为它不是DependancyProperty或DependancyObject。关于我如何做到这一点的任何想法?谢谢!
答案 0 :(得分:1)
在DataTriggers
的{{1}}中使用多值绑定多值转换器:
的Xaml:
DataGridRow.Style
多值转换器:
<Window.Resources>
<local:MultiConverter x:Key="multiConv"/>
</Window.Resources>
...
<DataGrid ItemsSource="{Binding ViewModel.MyList}" >
<DataGrid.RowStyle >
<Style TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<DataTrigger Value="true">
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource multiConv}">
<Binding Path="ColorColumn" />
<Binding Path="ViewModel.SelectedColor" RelativeSource="{RelativeSource Mode=FindAncestor,
AncestorType=Window}"/>
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="BorderBrush" Value="Red" />
<Setter Property="BorderThickness" Value="1" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
</DataGrid>
<ComboBox ItemsSource="{Binding ViewModel.ColorList}"
SelectedItem="{Binding ViewModel.SelectedColor}"/>