Silverlightbutton图片切换样式实例代码_asp.net教程-查字典教程网
Silverlightbutton图片切换样式实例代码
Silverlightbutton图片切换样式实例代码
发布时间:2016-12-29 来源:查字典编辑
摘要:之前一直做WPF现在开始接触Slilverlight感触很多。今天做一个Button要求有两个图片,button默认有一个图片,鼠标over...

之前一直做WPF现在开始接触Slilverlight感触很多。

今天做一个Button要求

有两个图片,button默认有一个图片,鼠标over时用另一个图片,

用wpf做的时候写一个template很简单,但silverlight和wpf写起来不一样

记录一下。大概思路是两个image鼠标MouseOver的时候一个Visible一个Collapsed

写的是一个自定义控件,代码和皮肤分离,很简单的一个demo

代码下载:ImageButtonTest.rar

先写一个继承自button的imagebutton类

复制代码 代码如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Net;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Animation;

using System.Windows.Shapes;

namespace ImageButtonTest

{

/// <summary>

/// build by lp

/// </summary>

public class MyImageButton : Button

{

public static readonly DependencyProperty ImageNormalProperty =

DependencyProperty.Register("ImageNormal",

typeof(ImageSource),

typeof(MyImageButton),

new PropertyMetadata(null));

public static readonly DependencyProperty ImageHoverProperty =

DependencyProperty.Register("ImageHover",

typeof(ImageSource),

typeof(MyImageButton),

new PropertyMetadata(null));

//鼠标移到上面

public ImageSource ImageHover

{

get { return (ImageSource)GetValue(ImageHoverProperty); }

set { SetValue(ImageHoverProperty, value); }

}

//默认图片

public ImageSource ImageNormal

{

get { return (ImageSource)GetValue(ImageNormalProperty); }

set { SetValue(ImageNormalProperty, value); }

}

public MyImageButton()

{

this.DefaultStyleKey = typeof(MyImageButton);

}

}

}

一个是鼠标移到上面的imageSource一个是默认的source

看一下它的样式 用sotryboard控制

鼠标MouseOver的时候一个Visible一个Collapsed

复制代码 代码如下:

<ResourceDictionary

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

xmlns:local="clr-namespace:ImageButtonTest" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d">

<Style TargetType="local:MyImageButton">

<Setter Property="Template">

<Setter.Value>

<ControlTemplate TargetType="local:MyImageButton">

<Grid Background="{TemplateBinding Background}">

<VisualStateManager.VisualStateGroups>

<VisualStateGroup x:Name="CommonStates">

<VisualState x:Name="Normal"/>

<VisualState x:Name="MouseOver">

<Storyboard>

<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="mouseOverImage">

<DiscreteObjectKeyFrame KeyTime="0">

<DiscreteObjectKeyFrame.Value>

<Visibility>Visible</Visibility>

</DiscreteObjectKeyFrame.Value>

</DiscreteObjectKeyFrame>

</ObjectAnimationUsingKeyFrames>

<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="normalImage">

<DiscreteObjectKeyFrame KeyTime="0">

<DiscreteObjectKeyFrame.Value>

<Visibility>Collapsed</Visibility>

</DiscreteObjectKeyFrame.Value>

</DiscreteObjectKeyFrame>

</ObjectAnimationUsingKeyFrames>

</Storyboard>

</VisualState>

<VisualState x:Name="Pressed"/>

<VisualState x:Name="Disabled"/>

</VisualStateGroup>

</VisualStateManager.VisualStateGroups>

<Image x:Name="normalImage" Source="{TemplateBinding ImageNormal}" Stretch="Fill"/>

<Image x:Name="mouseOverImage" Source="{TemplateBinding ImageHover}" Stretch="Fill" Visibility="Collapsed"/>

</Grid>

</ControlTemplate>

</Setter.Value>

</Setter>

</Style>

</ResourceDictionary>

这样就可以用了

我们在页面上调用一下

复制代码 代码如下:

<UserControl

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

xmlns:local="clr-namespace:ImageButtonTest" x:Class="ImageButtonTest.MainPage"

mc:Ignorable="d"

d:DesignHeight="300" d:DesignWidth="400">

<Grid x:Name="LayoutRoot" Background="White">

<local:MyImageButton Margin="0" ImageHover="Images/全屏鼠标移上.png" ImageNormal="Images/全屏.png" Width="100" Height="100" HorizontalAlignment="Center" VerticalAlignment="Center">

</local:MyImageButton>

</Grid>

</UserControl>

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新asp.net教程学习
    热门asp.net教程学习
    编程开发子分类