如果同一控制的事件触发,如何将控件的属性设置为特定值?
假设我有扩展器
<Expander Header="Click to expand" GotFocus="IsExpanded=True" />
我想将IsExpanded属性设置为true,如果它有焦点。 如何在 Xaml 中执行此操作?
答案 0 :(得分:3)
您可以尝试使用binding,可能是这样的:
<Expander IsExpanded="{Binding IsFocused, RelativeSource={RelativeSource Self}, Mode=OneWay}" />
答案 1 :(得分:2)
阿德里安的方法是实现目标的最简洁方法。但是,如果要在事件触发时更改属性,可以尝试以下操作:
<Expander Header="Click to expand">
<Expander.Style>
<Style TargetType="Expander">
<Style.Triggers>
<EventTrigger RoutedEvent="GotFocus">
<BeginStoryboard>
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Expander.IsExpanded)">
<DiscreteObjectKeyFrame KeyTime="0" Value="True"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Style.Triggers>
</Style>
</Expander.Style>
</Expander>
注意:这完全来自内存,可能无法正常工作。但它应该让你很好地了解如何实现这一目标。