2016-12-16 4 views
0

WPF datatriggerに結合解決できません:は、このコードを使用して

<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="Red"/> 

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

ラインを交換する場合、それは動作します。デバッグを使用すると、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> 

ブラックとして常に色の変化を利用して

UPDATE

。 MyColorはブラシであり、私はこの方法でそれを設定します。

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

代わりに、この<たSolidColorBrushカラー= "{バインディングDdaOptions.MyColor}" />のものがAttachedPropertyある場合、 は 、このように試みるが – WPFUser

+1

... 'DdaOptions'とは何ですか? – AnjumSKhan

+0

DdaOptionsはINotifyPropertyChangedを実装するViewModelです – MartinaLabMath

答えて

1

まず:あなたは直接このブラシにForegroundプロパティを設定する必要がありブラシ

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

がDdaOptions.MyColorソースプロパティが返す場合すべて:

<DataTrigger Binding="{Binding Highlighted}" Value="True"> 
    <Setter Property="Foreground" Value="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}, Path=DataContext.DdaOptions.MyColor}"/> 
</DataTrigger> 
DdaOptions.MyColorはタイプ SolidColorBrushであれば

は、これを使用します

または、このタイプ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を変更する必要があります。

+0

はい私はそれをしましたが、色は常に黒く変化します。デバッグでは、MyColor(MyColor = new SolidColorBrush(Color.FromRgb(myColor.R、myColor.G、myColor)。B));)は正しく設定されていますが、UIでは常に黒く表示されます – MartinaLabMath

+1

別のブラシを使用します。DdaOptions.MyColor = System.Windows.Media.Brushes.Yellow;あなたは、あなたが提供した情報に基づいて表示されることを期待している正確な色を誰かが知ることは実際には期待できません。 – mm8

+0

それでも動作しません。私はボタンとグリッドのグループを持っています。各ボタンにはカスタマイズされた背景色があります。ボタンをクリックすると、グリッド内の行の前景が、クリックされたボタンの色に応じて変更されます。 – MartinaLabMath