基于ViewModel中的Property更改DataGrid的边框颜色

时间:2015-07-01 02:19:53

标签: c# wpf mvvm datagrid

我有一个Combobox和一个DataGrid。我希望能够在Combobox中选择一个值(SelectedItem是数据绑定到ViewModel的属性)。如果DataGrid中特定列的单元格值与组合框值匹配,我想更改整行的边框颜色。我已经找到了使用转换器更改DataGrid边框颜色的方法,但ConverterParameter无法绑定到SelectedItem属性,因为它不是DependancyProperty或DependancyObject。关于我如何做到这一点的任何想法?谢谢!

1 个答案:

答案 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}"/>