我想编写一个自定义控件,并希望它在页面是纵向或对齐时具有不同的填充。我注意到页面继承自 LayoutAwarePage,它创建了对以下视图状态的支持:
- 全屏横向
- 填充
- 全屏人像
- 抢购
我是否需要将类似的代码添加到我的新控件(它继承自 Control)。如果不是,为什么 LayoutAwarePage 必须这样做?另外,我可以将以下 VisualStateManager 粘贴到我的控件的 ControlTemplate 中并让它尊重页面布局还是这太容易了。
<VisualStateGroup x:Name="ApplicationViewStates">
<VisualState x:Name="FullScreenLandscape"/>
<VisualState x:Name="Filled"/>
<VisualState x:Name="FullScreenPortrait">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Padding">
<DiscreteObjectKeyFrame KeyTime="0" Value="1,2,3,4"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Snapped">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Padding">
<DiscreteObjectKeyFrame KeyTime="0" Value="5,6,7,8"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
编辑:看起来控件默认不支持这些状态,必须添加它们。看来 ButtonBase 确实支持这些状态,因为它在其样式中使用它们。