Windows 10でUniversalアプリケーションの '確定的な' ProgressRingを作成しようとしていて、StateTriggerを使用して問題が発生しました。アクティブ化後、以前のVisualStateに戻りませんが、代わりにnull
に戻ります。私はこれが期待される行動ではないと思います。アニメーションはトリガされたときに正しく発生しますが、アニメーションが戻るときには発生しません。とにかくOnApplyTemplate
の間に正常に発生するコードから...GoToState(..., "Running", ...)
が呼び出されると、期待どおりにアニメーション化されます。StateTriggerは以前のVisualStateに戻りませんか?
私が試みた:(驚くほど)To="Stopped"
時動作
<VisualStateGroup.Transitions>
<VisualTransition From="{x:Null}" To="Stopped" GeneratedDuration="0:0:1" />
<VisualTransition From="Stopped" To="{x:Null}" GeneratedDuration="0:0:1" />
</VisualStateGroup.Transitions>
、以下のコードと同じではなく、逆中。
私はこれがコードではなくXAMLで機能するようにしたいと考えています。 DotNetのバグか私のせい?そして私はそれをどのように修正するのですか?手動で「実行中」の状態に戻す必要がありますか? ControlTemplateの中に表示されるコード、:
<VisualStateGroup x:Name="States">
<VisualStateGroup.Transitions>
<VisualTransition GeneratedDuration="0:0:1" />
</VisualStateGroup.Transitions>
<VisualState x:Name="Running" />
<VisualState x:Name="Stopped">
<VisualState.StateTriggers>
<StateTrigger IsActive="{Binding ShowPaused, RelativeSource={RelativeSource TemplatedParent}}" />
</VisualState.StateTriggers>
<Storyboard>
<DoubleAnimation Storyboard.TargetName="PART_Indicator"
Storyboard.TargetProperty="(UIElement.Opacity)"
To="{ThemeResource ProgressBarIndicatorPauseOpacity}"/>
</Storyboard>
</VisualState>
</VisualStateGroup>
'VisualStateGroup.Transitions'は' InvertBoolConverter'なしで動作すると予想されますか?それはデフォルトの ' 'を使うこととどう違うのですか?私の場合は 'InvertBoolConverter'がなくとも動作しません。私はまだ 'InvertBoolConverter'が必要な理由を理解していません。' 'それを気にするべきではありませんか? –
@TimRawlinsonあなたの場合、 'InvertBoolConverter'が必要です。 VisualStateManagerシステムは、 'VisualState'が変更されたことを知る必要があるので、' VisualTransition'に従ってアニメーションを実行できます。 "Runing"に 'StateTrigger'を設定しないと、' ShowPaused'が 'false'のときに' VisualState'の変更はありません。これは、 'StateTrigger.IsActive'プロパティが' false'であるときに、コントロールの状態の変更を削除し、 'VisualState'の変更をトリガーしないためです。 –