Проблемы с GoToStateAction - PullRequest
       29

Проблемы с GoToStateAction

2 голосов
/ 15 апреля 2011

У меня было несколько проблем с GoToStateAction в разных сценариях, и я начинаю верить, что либо функция глючит, либо что мое понимание отключено.

В этом случае у меня естьтабличка с эллипсом, представляющая соединитель.Соединитель имеет свойство IsConnected ... Я использую VisualStates и GoToStateAction с DataTrigger для переключения между двумя состояниями «Подключен» и «Не подключен».Тем не менее, в этом случае состояние никогда не устанавливается.

Я знаю, что модель настроена правильно, так как попытка других сценариев связывания с IsConnected работает нормально.Что я делаю не так?

<DataTemplate x:Key="ConnectorTemplate">
            <Grid x:Name="grid">
                <VisualStateManager.VisualStateGroups>
                    <VisualStateGroup x:Name="ConnectionStates">
                        <VisualState x:Name="Connected">
                            <Storyboard>
                                <ColorAnimation Duration="0" To="#FFEAFFDD" Storyboard.TargetProperty="(Shape.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)" Storyboard.TargetName="ellipse" d:IsOptimized="True"/>
                                <ColorAnimation Duration="0" To="#FF56992B" Storyboard.TargetProperty="(Shape.Fill).(GradientBrush.GradientStops)[0].(GradientStop.Color)" Storyboard.TargetName="ellipse" d:IsOptimized="True"/>
                            </Storyboard>
                        </VisualState>
                        <VisualState x:Name="NotConnected"/>
                    </VisualStateGroup>
                </VisualStateManager.VisualStateGroups>
                <VisualStateManager.CustomVisualStateManager>
                    <ei:ExtendedVisualStateManager/>
                </VisualStateManager.CustomVisualStateManager>

                <Ellipse x:Name="ellipse"
                    Height="8"
                    Width="8">
                    <i:Interaction.Triggers>
                        <ei:DataTrigger Binding="{Binding IsConnected}" Value="true">
                            <ei:GoToStateAction StateName="Connected"/>
                        </ei:DataTrigger>
                        <ei:DataTrigger Binding="{Binding IsConnected}" Value="false">
                            <ei:GoToStateAction StateName="NotConnected"/>
                        </ei:DataTrigger>
                    </i:Interaction.Triggers>
                    <Ellipse.Fill>
                        <RadialGradientBrush Center="0.275,0.262"
                            GradientOrigin="0.275,0.262"
                            RadiusX="0.566"
                            RadiusY="0.566">
                            <GradientStop Color="#FF333333"
                                Offset="1" />
                            <GradientStop Color="#FFC4C4C4" />
                        </RadialGradientBrush>
                    </Ellipse.Fill>
                </Ellipse>
            </Grid>
        </DataTemplate>

Ответы [ 2 ]

0 голосов
/ 15 августа 2012

GoToStateAction не запускается при загрузке элемента, он вступает в игру только при изменении связанного свойства (событие PropertyChanged вызывается).

0 голосов
/ 15 апреля 2011

Я думаю, вам следует установить TargetName в GoToStateAction, потому что по умолчанию, если моя память мне не изменяет, Target ассоциируется с объектом GoToStateAction, в вашем случае - ellipse

...