2011-04-15 80 views
2

我在GoToStateAction的不同场景中遇到了几个问题,我开始相信这个功能有问题,或者我对它的理解是关闭的。与GoToStateAction相关的问题

在这种情况下,我有一个椭圆代表连接器的数据模板。连接器有一个IsConnected属性...我使用VisualStates和GoToStateAction与DataTrigger在2个状态'Connected'和'NotConnected'之间切换。但是,在这种情况下,国家从未设置。

我知道模型设置正确,因为尝试使用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> 

回答

0

我想你应该在GoToStateAction设置的TargetName,因为默认情况下,如果我没记错的话,目标与GoToStateAction对象关联,你的情况 - 椭圆

0

GoToStateAction不会被触发时,该项目被加载时,它只会在相关属性更改时触发(PropertyChanged事件被触发)。