2013-10-16 66 views
0

我要創建具有一個TreeView「的ItemsSource =的ObservableCollection ......「
我創建了一個樹型視圖樣式包含與綁定到的ObservableCollection項目控制的DataGrid。對於綁定的屬性例子複選框項目如何將樣式屬性綁定到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如果你要綁定到一個ViewModel屬性所結合是你控制的DataContext的

注: DataTriggers可以綁定到DependencyProperties了。

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

我得到異常:{ 「Triggers集合成員必須是類型EventTrigger的。」} – user436862

+0

參考尼特的回答應該是StackPanel的。樣式然後將觸發器不直接觸發器設置爲StackPanel.Triggers,因爲它不起作用。 –

1

不要設置StackPanel.Triggers,設置StackPanel.Style然後設置Style.Triggers

<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

相關問題