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 に答える