2015-10-08 53 views
0

我有一个样式触发器,如下所示。将DataGridCell的前景颜色绑定到ViewModel画笔属性

<Style TargetType="DataGridCell" x:Key="ValidMatch"> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding IsValidMatch}" Value="False"> 
      <Setter Property="Foreground" Value="Red" /> 
      <Setter Property="FontWeight" Value="Bold"/> 
     </DataTrigger> 
    </Style.Triggers> 
</Style> 

风格工作正常。但是,当任何DataGrid单元格变为红色的颜色,然后我想的颜色绑定到视图模型的System.Windows.Media.BrushBrushProperty和这样说

if(Colors.Red.Equal(BrushProperty)) then do something. 

问题是,当我有一个setter属性像

<Setter Property="Foreground" 
     Value="{Binding BrushProperty, Mode=OneWayToSource, NotifyOnTargetUpdated=True"}/> 

包含在DataGridCellStyle中,它不会将UI的前景颜色应用于红色,也不会将颜色绑定到ViewModel。 ViewModel实现了BindableBase。如何将datagridcell颜色绑定到视图模型中的属性并做一些比较。请帮忙。

回答

1

尝试做这样的,

<Style.Triggers> 
    <DataTrigger Binding="{Binding IsValidMatch}" Value="False"> 
     <Setter Property="Foreground" Value="{Binding BrushProperty, Mode=TwoWay}" /> 
    </DataTrigger> 
</Style.Triggers> 

设置你的BrushPropertyViewModel

+0

我想这个私人刷_foreround; \t \t公共刷前景 \t \t { \t \t \t得到{Brushes.Red; } \t \t \t set {SetProperty(ref _foreround,value); } \t \t} 但它剂量应用红色的数据网格。 – nikhil

+0

您是否检查过输出窗口中的绑定错误? –

相关问题