无法解析 datatrigger wpf 中的绑定

Cannot resolve binding in datatrigger wpf

使用此代码:

  <DataGrid
    Grid.Row="1"
    ItemsSource="{Binding DdaOptions.FilteredRecords.FilteredRecords}"
    AutoGenerateColumns="False"
    VerticalScrollBarVisibility="Auto"
    GridLinesVisibility="None"
    Background="{StaticResource White1}"
    BorderThickness="1"
    BorderBrush="{StaticResource White1}"
    Style="{StaticResource Roboto10DataGrid}"
    AreRowDetailsFrozen="True"
    CanUserAddRows="False">
  <DataGrid.Columns>
    <DataGridTextColumn Header="GuideNumber" Binding="{Binding GuideNumber}" />
    <DataGridTextColumn Header="PartNumber" Binding="{Binding PartNumber}" />
    <DataGridTextColumn Header="Options" Binding="{Binding Options}" />
    <DataGridTextColumn Header="Description" Binding="{Binding Description}" />
    <DataGridTextColumn Header="PartStock" Binding="{Binding PartStock}" />
    <DataGridTextColumn Header="InterventionType" Binding="{Binding InterventionType}" />
  </DataGrid.Columns>
<DataGrid.RowStyle>
    <Style TargetType="DataGridRow" BasedOn="{StaticResource {x:Type DataGridRow}}">
      <Style.Triggers>
        <DataTrigger Binding="{Binding IsInDda}" Value="True">
          <Setter Property="Foreground" Value="{StaticResource DarkAccent1}" />
        </DataTrigger>
        <DataTrigger Binding="{Binding Highlighted}" Value="True">
          <Setter Property="Foreground">
            <Setter.Value>
             <SolidColorBrush Color="{Binding DdaOptions.MyColor}"/>
            </Setter.Value>
          </Setter>
        </DataTrigger>
      </Style.Triggers>
    </Style>
  </DataGrid.RowStyle>
</DataGrid>

绑定 Color="{Binding DdaOptions.MyColor}" 无效。如果我替换行

<SolidColorBrush Color="{Binding DdaOptions.MyColor}"/>

用这条线

<SolidColorBrush Color="Red"/>

有效。使用调试 DdaOptions.MyColor 属性 已正确设置。 如何更改代码以解决此问题? 我尝试使用转换器而不是

<SolidColorBrush Color="{Binding DdaOptions.MyColor}"/>

但问题依旧。 属性 MyColor 的类型是 Color。 Dda 是 ViewModel,它实现了 INotifyPropertyChanged。 有什么想法吗?

更新

使用此代码

 <DataTrigger Binding="{Binding Highlighted}" Value="True">
   <Setter Property="Foreground" Value="{Binding DdaOptions.MyColor}"/>
 </DataTrigger>

而不是

  <DataTrigger Binding="{Binding Highlighted}" Value="True">
    <Setter Property="Foreground">
      <Setter.Value>
        <SolidColorBrush Color="{Binding DdaOptions.MyColor}"/>
      </Setter.Value>
    </Setter>
  </DataTrigger>

颜色总是变黑。 MyColor 是一个 Brush,我是这样设置的:

MyColor = new SolidColorBrush(Color.FromRgb(myColor.R, myColor.G, yColor.B));

如果 DdaOptions.MyColor 源 属性 returns 一个 画笔 你应该直接将前景 属性 设置为这个画笔:

<DataTrigger Binding="{Binding Highlighted}" Value="True">
    <Setter Property="Foreground" Value="{Binding DdaOptions.MyColor}" />
</DataTrigger>

首先:

如果 DdaOptions.MyColorSolidColorBrush 类型,那么使用这个:

<DataTrigger Binding="{Binding Highlighted}" Value="True">
    <Setter Property="Foreground" Value="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}, Path=DataContext.DdaOptions.MyColor}"/>
</DataTrigger>

或者如果是 Color 类型那么这个:

<DataTrigger Binding="{Binding Highlighted}" Value="True">
  <Setter Property="Foreground">
    <Setter.Value>
      <SolidColorBrush Color="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}, Path=DataContext.DdaOptions.MyColor}"/>
    </Setter.Value>
  </Setter>
</DataTrigger>

当然,您必须将 AncestorType=Window 更改为正确的类型。