VisualState Disabled работает только в первый раз - PullRequest
0 голосов
/ 02 июля 2019

У меня есть набор флажков, которые были стилизованы под переключатели и используются для выбора или отмены выбора пользователей в сети, которые хочет включить текущий пользователь. Эти флажки можно отключить или включить во время выполнения в зависимости от того, доступен пользователь или нет.

Чтобы визуализировать все это, я создал стиль с визуальным менеджером состояний, который имеет 2 VisualStateGroups, один для обработки проверок и снятий отметок и один для обработки отключенного состояния. Это все работает нормально, когда флажок отключен, а затем снова включен. Но во второй раз, когда я отключаю флажок, он остается застрявшим в своем непроверенном стиле.

Я пробовал решения, предлагаемые в Проверено VisualState не запускается после повторного включения RadioButton и первого ответа от него Как сохранить статус ToggleButton после повторного включения , но у меня все та же проблема. Кроме того, первое решение сделало его более уродливым, поэтому я снова изменил его.

Мой VisualStateManager:

<VisualStateManager.VisualStateGroups>
                                <VisualStateGroup x:Name="CheckStates">
                                    <VisualState x:Name="Checked">
                                        <Storyboard>
                                            <DoubleAnimationUsingPath
                                                Storyboard.TargetName="ellipseAnim"
                                                Storyboard.TargetProperty="X"
                                                PathGeometry="{StaticResource pathCheck}"
                                                Source="X"
                                                Duration="00:00:00.1" />
                                            <ObjectAnimationUsingKeyFrames
                                                Storyboard.TargetName="grid"
                                                Storyboard.TargetProperty="Background">
                                                <DiscreteObjectKeyFrame KeyTime="00:00:00.05" Value="{StaticResource checkBrush}" />
                                            </ObjectAnimationUsingKeyFrames>
                                            <ObjectAnimationUsingKeyFrames
                                                Storyboard.TargetName="toggleBall"
                                                Storyboard.TargetProperty="Fill">
                                                <DiscreteObjectKeyFrame KeyTime="00:00:00.1" Value="{StaticResource XVR30}" />
                                            </ObjectAnimationUsingKeyFrames>
                                            <ObjectAnimationUsingKeyFrames
                                                Storyboard.TargetName="Border"
                                                Storyboard.TargetProperty="Background">
                                                <DiscreteObjectKeyFrame KeyTime="00:00:00.1" Value="{StaticResource XVR220}" />
                                            </ObjectAnimationUsingKeyFrames>
                                        </Storyboard>
                                    </VisualState>
                                    <VisualState x:Name="Unchecked" >
                                        <Storyboard x:Name="Uncheck">
                                            <DoubleAnimationUsingPath
                                                Storyboard.TargetName="ellipseAnim"
                                                Storyboard.TargetProperty="X"
                                                PathGeometry="{StaticResource pathUncheck}"
                                                Source="X"
                                                Duration="00:00:00.1" />
                                        </Storyboard>
                                    </VisualState>
                                    <VisualState x:Name="Indeterminate">
                                        <Storyboard>
                                            <DoubleAnimationUsingKeyFrames
                                                BeginTime="0:0:0"
                                                Storyboard.TargetName="toggleBall"
                                                Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" >
                                                <SplineDoubleKeyFrame KeyTime="00:00:00.5" Value="-15" />
                                            </DoubleAnimationUsingKeyFrames>
                                        </Storyboard>
                                    </VisualState>
                                </VisualStateGroup>
                                <VisualStateGroup x:Name="DisabledStates">
                                    <VisualState x:Name="Disabled">
                                        <Storyboard>
                                            <ObjectAnimationUsingKeyFrames
                                                Storyboard.TargetName="toggleBall"
                                                Storyboard.TargetProperty="Fill">
                                                <DiscreteObjectKeyFrame KeyTime="00:00:00.1" Value="{StaticResource XVR90}" />
                                            </ObjectAnimationUsingKeyFrames>
                                        </Storyboard>
                                    </VisualState>
                                </VisualStateGroup>
                            </VisualStateManager.VisualStateGroups>
...