1

如果触发同一控件的事件,如何将控件的属性设置为特定值?

假设我有一个扩展器

 <Expander Header="Click to expand" GotFocus="IsExpanded=True" />

如果它有焦点,我想将 IsExpanded 属性设置为 true。我怎样才能在Xaml中做到这一点?

4

2 回答 2

3

您可以尝试使用binding,可能是这样的:

 <Expander IsExpanded="{Binding IsFocused, RelativeSource={RelativeSource Self}, Mode=OneWay}" />
于 2012-12-05T09:16:36.120 回答
2

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>

注意:这纯粹来自记忆,可能无法按原样工作。但它应该让您很好地了解如何实现这一点。

于 2012-12-05T09:22:37.767 回答