2012-05-03 2 views
0

저는 여전히 WPF에서 피 묻은 녹색이며 아직 그 개념을 완전히 이해하지 못했습니다. 다음과 같은 문제가 발생했습니다 :코드 숨김에서 값을 참조하는 Datagrid multitrigger

전제 조건에 따라 DataGrid에서 트리거를 설정하려고합니다.

예 : 내에서

코드 숨김, 내가 문자열 변수를 가지고,의는 variableString를 호출 할 수 있습니다. 다음

if(variableString == "a") 

XAML

<DataGrid AutoGenerateColumns="False" Margin="5,5,0,75" Name="dataGrid1" ItemsSource="Binding}"> 
    <DataGrid.ItemContainerStyle> 
     <Style TargetType="DataGridRow"> 
      <Style.Triggers> 
        <DataTrigger Binding="{Binding Path=SomeColumnName}" Value="someValue"> 
        <Setter Property="Background" Value="White"/> 
        <DataTrigger Binding="{Binding Path=SomeColumName}" Value="someOtherValue"> 
        <Setter Property="Background" Value="Red"/> 
      </Style.Triggers> 
     </Style> 
    </DataGrid.ItemContainerStyle> 

그렇지 않으면 : 이제 variableString의 값에 따라, 나는 내가 좋아하는 XAML에 정의 된 것으로, 활성화/데이터 그리드 내부의 트리거를 비활성화 할 다음

if(variableString == "b") 

경우
Do Nothing` 

나는 이미 문자열을 datagrid의 datacontext에 바인딩하려고 시도했지만 데이터베이스에 대한 바인딩을 제거하기 때문에 오히려 생산성이 떨어졌습니다.

아무도 나를 도와 줄 수 있습니까? 예를 들어, 올바른 방향으로 밀어 넣기 등 ...

WPF에서 제공하는 옵션이 정말 좋지만, WPF에서 너무 쉽게 처리되는 WinForms에서 처리하기 쉬운 기본 작업입니다.

감사

답변

1

나는 당신이 아마 사용해야합니다, 당신은 당신이 뒤에있는 코드에서 문자열을 찾으려면 여러 값

<MultiDataTrigger> 
    <MultiDataTrigger.Conditions> 
     <Condition Binding="{Binding Path=SomeColumnName}" Value="someValue" /> 
     <Condition Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type Window}}, Path=variableString}" Value="A" /> 
    </MultiDataTrigger.Conditions> 
    <Setter Property="Background" Value="White" /> 
    </MultiDataTrigger> 

오프 트리거를 기반으로 할 수있는 MultiDataTrigger를 원한다고 생각 어떤 종류의 RelativeSource 바인딩은 해당 속성을 포함하는 클래스를 찾습니다. 내 예제에서는 Window 클래스에 variableString이라는 공공 재산이 있다고 가정합니다.

+0

감사합니다. – tcm1211

관련 문제