私は、トグルボタンがオンのときに、色、サイズ、有効/無効の変更など、いくつかの基準によって状態が変わるボタンを持っています。我々は状態1と状態2を定義UWP要素の状態を設定する方法は?
if (toggleButton.IsOn) btnName.state = State1;
else btnName.state = State2;
(多分XAMLで?):私の目標は、我々はこのような何かを行うことができるように状態をカプセル化することです。
これはUWPで可能ですか?
私は、トグルボタンがオンのときに、色、サイズ、有効/無効の変更など、いくつかの基準によって状態が変わるボタンを持っています。我々は状態1と状態2を定義UWP要素の状態を設定する方法は?
if (toggleButton.IsOn) btnName.state = State1;
else btnName.state = State2;
(多分XAMLで?):私の目標は、我々はこのような何かを行うことができるように状態をカプセル化することです。
これはUWPで可能ですか?
VisualStateManager
を使用して、コントロールの特定の状態を呼び出すことができます。
VisualStateManager.GoToState(MyToggleSwitch, "On", true);
をしかし、これをしない - あなたは手動ToggleSwitch
がOn
状態に行かせたい場合たとえば、あなたは書くことができます。これは状態を視覚的にに設定するだけなので、基礎となるIsOn
プロパティはまだFalse
です。
実際にはIsOn
~True
と設定すると、On
の状態が自動的に適用されます。 ToggleSwitch
のdefault styleでToggleStates
視覚的な状態のグループ内で、次のようなStoryboard
Sの束とOn
状態がありますので、これはです -
<VisualState x:Name="On">
<Storyboard>
<DoubleAnimation Storyboard.TargetName="KnobTranslateTransform"
Storyboard.TargetProperty="X"
To="24"
Duration="0" />
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="SwitchKnobBounds"
Storyboard.TargetProperty="Opacity">
<DiscreteObjectKeyFrame KeyTime="0" Value="1" />
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="OuterBorder"
Storyboard.TargetProperty="Opacity">
<DiscreteObjectKeyFrame KeyTime="0" Value="0" />
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="SwitchKnobOn"
Storyboard.TargetProperty="Opacity">
<DiscreteObjectKeyFrame KeyTime="0" Value="1" />
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="SwitchKnobOff"
Storyboard.TargetProperty="Opacity">
<DiscreteObjectKeyFrame KeyTime="0" Value="0" />
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
これらStoryboard
sがIsOn
がTrue
に設定されるたびに開始されます。このトリガーロジックはToggleSwitch
のコード内にカプセル化されています。したがって、カスタムコントロールのビジュアル状態を独自に定義する場合は、状態プロパティ(例:IsChecked
、IsSelected
、IsOn
、IsEnabled
)を対応する状態に手動で接続する必要があります。単にそれらを更新し、正しい状態が適用されることを期待することができます。
_ "これはUWPで可能ですか?" - もちろんです。 XAMLベースのAPIはすべて、MVVMスタイルのプログラミングを使用してビジネスロジックとUIを分離することを期待しています。実際にどのような状態になっているかに応じて、ボタンスタイルでトリガーを使用するか、トグルボタンの状態に応じて調整するビューモデルのプロパティを使用する必要があります。あなたの質問がどれほど漠然としているかを考えると、答えは実際には広すぎるだけです。 [mcve]と明確で詳細な説明を使用して、自分が行っていること、試したこと、具体的に何が問題になっているのかを正確に示す必要があります。 –