本文介绍了定义DataTrigger为的StackPanel的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何定义一个 DataTrigger
为的StackPanel
?它有一个触发
属性,但在这里定义触发给出了初始化以下错误启动应用程序时:
How do I define a DataTrigger
for a StackPanel
? It does have a Trigger
property, but defining a trigger here gives the following error on Initialize when starting the application:
失败的对象初始化(ISupportInitialize.EndInit)。触发集合成员必须是类型EventTrigger中的。 ......
这是从下面给出简单的 DataTrigger
:
This is given from the following simple 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>
这是我的第一个触发
过,所以我该怎么办错了吗?我应该定义的触发
其他地方?
This is my first Trigger
ever, so what do I do wrong? Should I define the Trigger
elsewhere?
推荐答案
尝试像这样
<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>
这篇关于定义DataTrigger为的StackPanel的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!