2013-10-16 6 views
0

'ItemsSource = ObservableCollection ...'이있는 TreeView를 만들려고합니다.
ObservableCollection의 항목에 바인딩 된 컨트롤이있는 DataGrid가 포함 된 TreeViewItem의 스타일을 만들었습니다. 예를 들어 CheckBox의 속성에 바인딩 된 CheckBox 항목 나는 아이템 속성이 특정 값을 가질 경우에 컨트롤의 속성 값을 변경됩니다 트리거를 만들WPF에서 스타일 속성을 항목 값에 바인딩하는 방법은 무엇입니까?

:.

<Style TargetType="{x:Type TreeViewItem}" x:Key="GridItemStyle" x:Name="GridItemStyle2"> 
      <Setter Property="Template" > 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type TreeViewItem}">       
         <Border Background="Red" BorderBrush="Yellow" BorderThickness="3" Margin="2,10,0,0"> 
          <StackPanel Background="Red" Margin="10,10,10,10" Orientation="Horizontal">                         
           <StackPanel.Triggers> 
            <Trigger Property="{Binding IsSucceed}" Value="True"> 
             <Setter Property="Background" Value="Blue"/> 
            </Trigger> 
           </StackPanel.Triggers> 
           <TextBlock Margin="0,0,10,0" Text="{Binding Path=time, StringFormat={}\{0:dd/MM/yyyy hh:mm:ss:fff\}, Mode=OneWay}"/> 
           <TextBlock Margin="0,0,10,0" Text="{Binding milisecond}"/> 
           <TextBlock Margin="0,0,10,0" Text="{Binding address}"/> 
           <TextBlock Margin="0,0,10,0" Text="{Binding IsSucceed}"/> 
           <TextBlock Margin="0,0,10,0" Text="{Binding statues}"/> 
          </StackPanel> 
         </Border>      
        </ControlTemplate>          
       </Setter.Value> 
      </Setter> 
     </Style> 

때문에 트리거의 실행에서 Get 예외 :

<Trigger Property="{Binding IsSucceed}" Value="True"> 
     <Setter Property="Background" Value="Blue"/> 
    </Trigger> 

어떻게 해결할 수 있습니까?

답변

0

변경 트리거 DataTrigger에, 트리거는에 컨트롤에서 속성 (종속성 속성)를 기대하는 경우 사용하면 뷰 모델에 바인딩 된 속성을 결합하려는 경우 DataTrigger를 사용하는 사용자 컨트롤의 DataContext입니다. DataTriggers는 DependencyProperties에도 바인딩 할 수 있습니다.

<DataTrigger Binding={Binding IsSucceed}" Value="True"> 
     <Setter Property="Background" Value="Blue"/> 
</DataTrigger> 
+0

나는 예외가 Style.Triggers을 설정 : { "모음 회원 유형 EventTrigger이어야합니다 트리거합니다."} – user436862

+0

그것은 StackPanel을해야 니트의 대답을 참조하십시오. 스타일은 트리거가 직접 작동하지 않도록 트리거를 StackPanel.Triggers로 설정합니다. –

1

는 망가, StackPanel.Triggers을 설정 StackPanel.Style을 설정 한 다음

<StackPanel> 
     <StackPanel.Style> 
      <Style TargetType="StackPanel"> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding IsSucceed}" Value="True"> 
         <Setter Property="Background" Value="Blue"/> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </StackPanel.Style> 
+0

문제가 해결 되었습니까? – Nitin

관련 문제