如何在 VisualStateManager 的 XAML 中创建资源样式?

Wil*_*ard 1 xaml visualstatemanager xamarin xamarin.forms

嗨,我创建了一个ImagenButton如下:

<ImageButton Source="articulos.png" Clicked="ImageButton_Clicked"/>
Run Code Online (Sandbox Code Playgroud)

这是动画的代码:

<VisualStateManager.VisualStateGroups>
     <VisualStateGroup x:Name="CommonStates">
          <VisualState x:Name="Normal">
              <VisualState.Setters>
                  <Setter Property="Scale" Value="1"/>
              </VisualState.Setters>
          </VisualState>
          <VisualState x:Name="Pressed">
              <VisualState.Setters>
                  <Setter Property="Scale" Value="0.8"/>
              </VisualState.Setters>
           </VisualState>
       </VisualStateGroup>
</VisualStateManager.VisualStateGroups>
Run Code Online (Sandbox Code Playgroud)

但我想创建许多具有相同样式的按钮,我不想重复代码。

这是完整的代码:

<ImageButton Source="articulos.png" Clicked="ImageButton_Clicked">               
     <VisualStateManager.VisualStateGroups>
          <VisualStateGroup x:Name="CommonStates">
             <VisualState x:Name="Normal">
                 <VisualState.Setters>
                     <Setter Property="Scale" Value="1"/>
                 </VisualState.Setters>
             </VisualState>
             <VisualState x:Name="Pressed">
                 <VisualState.Setters>
                     <Setter Property="Scale" Value="0.8"/>
                 </VisualState.Setters>
              </VisualState>
          </VisualStateGroup>
     </VisualStateManager.VisualStateGroups>
 </ImageButton>
Run Code Online (Sandbox Code Playgroud)

请帮忙。

Bru*_*iro 9

您可以在页面中定义样式,然后将它们应用到您的控件:

<StackLayout.Resources>
    <Style TargetType="ImageButton">
        <Setter Property="VisualStateManager.VisualStateGroups">
                <VisualStateGroupList>
                    <VisualStateGroup x:Name="CommonStates">
                        <VisualState x:Name="Normal">
                            <VisualState.Setters>
                                <Setter Property="Scale" Value="1"/>
                            </VisualState.Setters>
                    </VisualState>
                    <VisualState x:Name="Pressed">
                        <VisualState.Setters>
                            <Setter Property="Scale" Value="0.8"/>
                        </VisualState.Setters>
                    </VisualState>
                </VisualStateGroup>
            </VisualStateGroupList>
        </Setter>
    </Style>
</StackLayout.Resources
Run Code Online (Sandbox Code Playgroud)

检查官方文档,它有一个例子