2016-12-16 1 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"> 
     <Setter.Value> 
     <SolidColorBrush Color="{Binding DdaOptions.MyColor}"/> 
     </Setter.Value> 
    </Setter> 
    </DataTrigger> 

색상 변화의

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

를 사용

UPDATE

. MyColor는 브러쉬와 나는 이런 식으로 설정할 :

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

, 이 같은 시도 는 그 AttachedProperty 경우 – WPFUser

+1

...'DdaOptions'이란 무엇입니까? – AnjumSKhan

+0

DdaOptions는 INotifyPropertyChanged를 구현하는 ViewModel입니다. – MartinaLabMath

답변

1

첫째 : 당신이 직접 브러시로 전경 속성을 설정해야 브러쉬

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

관련 문제