private ControlTemplate SetControlTemplate(string color)
{
FrameworkElementFactory fe = new FrameworkElementFactory(typeof(CustomBorder), "CustomBorder");
fe.SetValue(Border.BackgroundProperty, new SolidColorBrush((Color)ColorConverter.ConvertFromString(color)));
FrameworkElementFactory grid = new FrameworkElementFactory(typeof(Grid), "Grid");
grid.AppendChild(fe);
ControlTemplate ct = new Controlemplate();
ct.VisualTree = grid;
return ct;
}
因为想要设置Button的MouseOver事件 修改Button的BackGround的值,但是不知道如何添加VisualStateManager,所以用了自定义控件CustomBorder
1: <Border x:Name="border">
2: <Border.Background>
3: <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
4: <GradientStop Color="Black" Offset="0"/>
5: <GradientStop Color="White" Offset="1"/>
6: </LinearGradientBrush>
7: </Border.Background>
8: <VisualStateManager.VisualStateGroups>
9: <VisualStateGroup x:Name="VisualStateGroup">
10: <VisualState x:Name="bdrMouseOver">
11: <Storyboard>
12: <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background).(GradientBrush.GradientStops)[1].(GradientStop.Color)" Storyboard.TargetName="border">
13: <EasingColorKeyFrame KeyTime="0" Value="#FFA7A111"/>
14: </ColorAnimationUsingKeyFrames>
15: <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background).(GradientBrush.GradientStops)[1].(GradientStop.Offset)" Storyboard.TargetName="border">
16: <EasingDoubleKeyFrame KeyTime="0" Value="0.295"/>
17: </DoubleAnimationUsingKeyFrames>
18: <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background).(GradientBrush.GradientStops)[0].(GradientStop.Color)" Storyboard.TargetName="border">
19: <EasingColorKeyFrame KeyTime="0" Value="#FFFFF506"/>
20: </ColorAnimationUsingKeyFrames>
21: </Storyboard>
22: </VisualState>
23: <VisualState x:Name="bdrNormal"/>
24: </VisualStateGroup>
25: </VisualStateManager.VisualStateGroups>
26: <i:Interaction.Triggers>
27: <i:EventTrigger EventName="MouseEnter">
28: <ei:GoToStateAction StateName="bdrMouseOver"/>
29: </i:EventTrigger>
30: <i:EventTrigger EventName="MouseLeave">
31: <ei:GoToStateAction StateName="bdrNormal"/>
32: </i:EventTrigger>
33: </i:Interaction.Triggers>
34: </Border>
这里定义了CustomBorder的MouseOver事件