2012-11-03 4 views
0

Je voudrais savoir comment changer BorderColor d'une bordure avec MouseOver le StackPanel qui est à l'intérieur. J'ai essayé en définissant le TargetName au nom de la frontière à l'intérieur du VSM du StackPanel. Je sais que je suis loin, mais j'essaie plutôt quelque chose ...Modifier la couleur de la bordure autour d'un contrôle

<Border x:Name="LinksBorder" > 
<StackPanel x:Name="LinksStackPanel" Margin="10" Orientation="Horizontal" FlowDirection="RightToLeft" HorizontalAlignment="Center" Width="311"> 
    <VisualStateManager.VisualStateGroups> 
     <VisualStateGroup x:Name="CommonStates"> 
      <VisualState x:Name="Normal"> 
      </VisualState> 
      <VisualState x:Name="MouseOver"> 
      <Storyboard> 
       <ColorAnimation 
       Duration="0" Storyboard.TargetName="LinksBorder" Storyboard.TargetProperty="(BorderBrush).(SolidBrush)" To="#FF0000" /> 
      </Storyboard> 
      </VisualState> 
     </VisualStateGroup> 
     </VisualStateManager.VisualStateGroups> 

Répondre

0

Ma solution:

Private Sub LinksStackPanel_MouseEnter(sender As Object, e As System.Windows.Input.MouseEventArgs) Handles LinksStackPanel.MouseEnter 
    LinksBorder.BorderBrush = New Media.SolidColorBrush(Colors.Red) 
End Sub 

Private Sub LinksStackPanel_MouseLeave(sender As Object, e As System.Windows.Input.MouseEventArgs) Handles LinksStackPanel.MouseLeave 
    LinksBorder.BorderBrush = ColorFromHex("#FF00FF2A") 
End Sub 

Private Function ColorFromHex(hex As String) As Brush 
    hex = hex.Replace("#", String.Empty) 
    Dim a = (Convert.ToUInt32(hex.Substring(0, 2), 16)) 
    Dim r = (Convert.ToUInt32(hex.Substring(2, 2), 16)) 
    Dim g = (Convert.ToUInt32(hex.Substring(4, 2), 16)) 
    Dim b = (Convert.ToUInt32(hex.Substring(6, 2), 16)) 
    Return New SolidColorBrush(Color.FromArgb(CByte(a), CByte(r), CByte(g), CByte(b))) 
End Function 

aiment toujours voir l'autre trop ...

Questions connexes