カスタム コントロールを作成し、ページが縦またはスナップの場合に異なるパディングを設定したいと考えています。ページは、次のビュー ステートのサポートを作成する LayoutAwarePage を継承していることに気付きました。
- フルスクリーンランドスケープ
- 満たされた
- 全画面縦長
- スナップ
新しいコントロールに同様のコードを追加する必要がありますか (コントロールから継承します)。そうでない場合、なぜ 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 はこれらの状態をスタイルで使用しているため、これらの状態をサポートしているようにも見えます。