如果触发同一控件的事件,如何将控件的属性设置为特定值?
假设我有一个扩展器
<Expander Header="Click to expand" GotFocus="IsExpanded=True" />
如果它有焦点,我想将 IsExpanded 属性设置为 true。我怎样才能在Xaml中做到这一点?
您可以尝试使用binding,可能是这样的:
<Expander IsExpanded="{Binding IsFocused, RelativeSource={RelativeSource Self}, Mode=OneWay}" />
Adrian 的方法是实现目标的最干净的方法。但是,如果您想在事件触发时更改属性,可以尝试以下操作:
<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>
注意:这纯粹来自记忆,可能无法按原样工作。但它应该让您很好地了解如何实现这一点。