2

たとえば、要素のスタイルがあり、トリガーを使用して特定のリソースを変更したい

<Style x:Key="MyStyle" TargetType="{x:Type Tree:MyListBox}">
    <Style.Triggers>
        <DataTrigger Binding="{Binding Property}" Value="ItemSelected">
           <Setter Property="MydinamicResourceKey" Value="NewValue"/>
        </DataTrigger>
    </Style.Triggers>
</Style>

出来ますか?

4

1 に答える 1

0

VisualStateManager を使ってみてはいかがでしょうか。

これは、 Microsoft の ListBox Styles and Templates ページからのアイデアです。

<Style x:Key="MyStyle" TargeType="{x:Type Tree:MyListBox}">
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="{x:Type Tree:MyListBox}">
         <Border x:Name="Border">
           <VisualStateManager.VisualStateGroups>
              <VisualStateGroup x:Name="SelectionStates">
                 <VisualState x:Name="Unselected"/>
                 <VisualState x:Name="Selected">
                    <Storyboard>
                       <ObjectAnimationUsingKeyFrames Storyboard.TargetName="myUIElementName"
                                                      Storyboard.TargetProperty="myUIElementProperty">
                            <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{DynamicResource MyResourceKey}"/>
                        </ObjectAnimationUsingKeyFrames>
                       </Storyboard>
                      </VisualState>
                     </VisualStateGroup>
                    </VisualStateManager.VisualStateGroups>
                    .... more code here....
                  </Border>
                 </ControlTemplate>
                </Setter.Value>
               </Setter>
             </Style>

このタイプのアニメーション/変更についてブックマークされた Shawn Wildermuth によるチュートリアルがあります。今でもよく参照しています。

うまくいけば、これが役に立ち、正しい方向に進むことができます.

于 2014-06-26T21:44:04.990 に答える