0

「ItemsSource=ObservableCollection...」を持つ TreeView を作成したいと考えています。ObservableCollection
内のアイテムにバインドされたコントロールを持つ DataGrid を含む TreeViewItem のスタイルを作成しました。たとえば、アイテムのプロパティにバインドされた CheckBox です。

アイテムのプロパティに特定の値がある場合にコントロールのプロパティ値を変更するトリガーを作成したいと思います。

   <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>

どうすれば解決できますか?

4

2 に答える 2

0

TriggerDataTriggerに変更します。コントロールからのプロパティ(依存関係プロパティ)を期待している場合は Trigger が使用され、コントロールの DataContext である ViewModel にバインドされているプロパティをバインドする場合は DataTrigger を使用します。

注: DataTriggers は DependencyProperties にもバインドできます。

<DataTrigger Binding={Binding IsSucceed}" Value="True">
       <Setter Property="Background" Value="Blue"/>
</DataTrigger>
于 2013-10-16T17:53:30.240 に答える