なぜ私はこのようにコーディングできないのですか
<Border Width="130" Height="70">
<Border.Triggers>
<DataTrigger Binding="{Binding Path=CurrentStatus}" Value="0">
<Setter Property="Style" Value="{StaticResource ResourceKey=ListBoxItemBorder}"/>
</DataTrigger>
<DataTrigger Binding="{Binding Path=CurrentStatus}" Value="200">
<Setter Property="Style" Value="{StaticResource ResourceKey=ListBoxItemBorderInactive}"/>
</DataTrigger>
</Border.Triggers>
</Border>
このエラーが発生します
Failed object initialization (ISupportInitialize.EndInit).
Triggers collection members must be of type EventTrigger.
Error at object '4_T' in markup file
私は間違ったplzヘルプを何をしていますか。
安倍は正しく、制限をよく説明しています。検討したいことが1つあります。
2つの境界線スタイルを持ち、トリガーに基づいてそれらの間で選択しようとする代わりに...
境界線に単一のスタイルを使用します。このスタイルのセッターは、「通常の」外観を表します。このスタイルにはDataTriggerも含まれており、DataTriggerには、基本的に2番目のスタイルを表すセッターのコレクションがあります(このトリガーがtrueと評価された場合、標準のセッターよりも優先度が高くなります。
編集:
このようなもの -
<Style TargetType="Border" x:Key="BorderStyle">
<!-- These setters are the same as your normal style when none of your triggers are true -->
<Setter Property="BorderBrush" Value="Black" />
<Style.Triggers>
<DataTrigger Binding="{Binding Path=CurrentStatus}" Value="0">
<!-- These setters are the same as your ListBoxItemBorder style -->
<Setter Property="BorderBrush" Value="Green" />
</DataTrigger>
<DataTrigger Binding="{Binding Path=CurrentStatus}" Value="200">
<!-- These setters are the same as your ListBoxItemBorderInactive style -->
<Setter Property="BorderBrush" Value="Gray" />
</DataTrigger>
</Style.Triggers>
</Style>
残念ながら、要素に直接適用できるのはEventTriggers
だけです。 Trigger
またはDataTrigger
を使用する場合は、Style
、ControlTemplate
、またはDataTemplate
に含める必要があります。
リソース名から、これはBorder
ListBoxItem
内のControlTemplate
のように見えます。トリガーをテンプレートのトリガーコレクションに簡単に移動できます。
これが制限トリガーなしの方法です。
例:
<Border Width="130" Height="100" Grid.Row="1">
<ListBox x:Name="lstItems" ItemsSource="{Binding TestItems}">
</ListBox>
<tg:TriggerExtensions.Triggers>
<tg:TriggerCollections>
<tg:DataTriggerInfo Binding="{Binding CurrentStatus}" Value="0">
<tg:DataTriggerInfo.Setters>
<tg:SetterInfo ElementName="lstItems" Property="Style" Value="{StaticResource ListBoxRed}"/>
</tg:DataTriggerInfo.Setters>
</tg:DataTriggerInfo>
<tg:DataTriggerInfo Binding="{Binding CurrentStatus}" Value="0" IsInvert="True">
<tg:DataTriggerInfo.Setters>
<tg:SetterInfo ElementName="lstItems" Property="Style" Value="{StaticResource ListBoxBlue}"/>
</tg:DataTriggerInfo.Setters>
</tg:DataTriggerInfo>
</tg:TriggerCollections>
</tg:TriggerExtensions.Triggers>
</Border>
リンク サンプル
リンクコンポーネント Github