2013-03-17 53 views
0

你好,我坚持让我的VisualState正常工作。我试图实现的是设置在用户输入的边框颜色,所以我要做的就是这个VisualStateManager silverlight

VisualStateManager.GoToState(textbox, "BorderHighlight", false); 

,故事情节是在一个单独的VisualStateGroup定义

<VisualState x:Name="BorderHighlight" > 
    <Storyboard > 
     <ColorAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:05" 
      Storyboard.TargetName="Border" Storyboard.TargetProperty="   
       (Border.BorderBrush).(SolidColorBrush.Color)"> 
        ... 
     </ColorAnimationUsingKeyFrames> 
    </Storyboard> 
</VisualState> 

的问题是,该文本框现在不不要离开视觉状态,以免再次触发。所以我不得不将它切换回正常状态。我试图添加一个正常状态 到组看起来这是不允许的(只能有一个正常状态?) 我也尝试设置一个正常状态,我设置了突出状态的第一个完成后没有工作。

如果有人能在这里指出我正确的方向,我会非常感激。

回答

1

我假设你正在创建一个自定义控件。我想有这样的事情:

<VisualStateManager.VisualStateGroups> 
    <VisualStateGroup x:Name="BorderStates"> 

     <VisualState x:Name="BorderHighlight"> 
      <Storyboard> ... </Storyboard> 
     </VisualState> 

     <VisualState x:Name="BorderNormal"> 
      <Storyboard> ... </Storyboard> 
     </VisualState> 

    </VisualStateGroup> 
    ... 
</VisualStateManager.VisualStateGroups> 

然后在响应事件,在你的控制实现,像

protected override void OnMouseEnter(MouseEventArgs e) 
{ 
    VisualStateManager.GoToState(this, "BorderHighlight, false); 
    ... 
} 

protected override void OnMouseLeave(MouseEventArgs e) 
{ 
    VisualStateManager.GoToState(this, "BorderNormal, false); 
    ... 
}