如果事件触发,如何让控件设置自己的属性

时间:2012-12-05 09:09:26

标签: wpf events xaml controls

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

假设我有扩展器
     

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

我想将IsExpanded属性设置为true,如果它有焦点。 如何在 Xaml 中执行此操作?

2 个答案:

答案 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>

注意:这完全来自内存,可能无法正常工作。但它应该让你很好地了解如何实现这一目标。