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事件

posted on 2013-03-27 22:22  victor321  阅读(577)  评论(0编辑  收藏  举报