Как я определяю a DataTrigger
для a StackPanel
? Это действительно имеет a Trigger
свойство, но определение триггера здесь дает следующую ошибку на, Инициализируют при запущении приложения:
Неудавшаяся объектная инициализация (ISupportInitialize. EndInit). Триггерные участники набора должны иметь тип EventTrigger....
Это дано от следующего простого DataTrigger
:
<StackPanel x:Name="PersonPanel" DataContext="{Binding CurrentPerson}">
<TextBlock Text="{Binding Id}" />
<TextBlock Text="{Binding Name}" />
<StackPanel.Triggers>
<DataTrigger Binding="{Binding Id}" Value="1">
<Setter TargetName="PersonPanel" Property="StackPanel.Background" Value="Green" />
</DataTrigger>
</StackPanel.Triggers>
</StackPanel>
Это - мое первое Trigger
когда-нибудь, поэтому что я делаю неправильно? Если я определяю Trigger
в другом месте?
Попробуйте что-нибудь вроде этого
<Window.Resources>
<Style x:Key="spStyle" TargetType="StackPanel">
<Setter Property="StackPanel.Background" Value="Red" />
<Style.Triggers>
<DataTrigger Binding="{Binding Id}" Value="1">
<Setter Property="StackPanel.Background" Value="Green" />
</DataTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
<StackPanel x:Name="PersonPanel" Style="{StaticResource spStyle}" DataContext="{Binding CurrentPerson}">
<TextBlock Text="{Binding Id}" />
<TextBlock Text="{Binding Name}" />
</StackPanel>
попробуйте это:
<TextBlock Text="{Binding Id}">
<TextBlock.Style>
<Style>
<Style.Triggers>
<Trigger Property="TextBlock.Text" Value="1">
<Setter TargetName="PersonPanel" Property="StackPanel.Background" Value="Green" />
</Trigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>