silverlight 之 – Blend 之 Style for Button (三)

通过把定义的样式加入资源字典(Style.xaml)的方法大大方便的我们后续的工作,我们再次使用时只有选择“样式库”标签就可以快速设置,同时有利于设计的统一性;

 

但是当我们尝试用我们定义的样式来填充一个按钮时,发现他还是白色的,几乎没什么变化:

 

截图08

(分别是:Border,Grid,Canvas,StackPanel,Button)

那么下面我们就来研究下 button的样式制作?

开始之前我们准备足够用的“库样式”;

在这里纠正一下我发现在新的方法来定义资源字典(我很菜的,也才研究,请原谅

在填充后面会有一个小白色的框,点击以后里面有转换为新资源这一项

截图09   截图10

 

同时我们准备几个将要用到的“单色填充”,做完以后 ColorCard.xaml 页面是这样:

截图11

ColorCard.xaml  代码:

	<Grid x:Name="LayoutRoot" Background="#FF6A6A6A">
		<Rectangle Fill="{StaticResource FA}" Stroke="Black" Height="50" HorizontalAlignment="Left" Margin="33,37,0,0" VerticalAlignment="Top" Width="151"/>
		<Rectangle Stroke="Black" Height="50" HorizontalAlignment="Left" Margin="33,113,0,0" VerticalAlignment="Top" Width="151" Fill="{StaticResource FB}"/>
		<Rectangle Stroke="Black" Height="50" HorizontalAlignment="Left" Margin="33,181,0,0" VerticalAlignment="Top" Width="151" Fill="{StaticResource FC}"/>
		<Rectangle Stroke="Black" Height="50" HorizontalAlignment="Left" Margin="33,0,0,177" VerticalAlignment="Bottom" Width="151" Fill="{StaticResource FD}"/>
		<Rectangle Stroke="Black" Height="50" HorizontalAlignment="Left" Margin="33,0,0,103" VerticalAlignment="Bottom" Width="151" Fill="{StaticResource FE}"/>
		<Rectangle Stroke="Black" Height="50" HorizontalAlignment="Left" Margin="33,0,0,32" VerticalAlignment="Bottom" Width="151" Fill="{StaticResource FF}"/>
		<Rectangle Fill="{StaticResource CA}" Stroke="Black" Height="50" Margin="217,37,272,0" VerticalAlignment="Top"/>
		<Rectangle Fill="{StaticResource CB}" Stroke="Black" Height="50" Margin="217,113,272,0" VerticalAlignment="Top"/>
		<Rectangle Fill="{StaticResource CC}" Stroke="Black" Height="50" Margin="217,181,272,0" VerticalAlignment="Top"/>
		<Rectangle Fill="{StaticResource CD}" Stroke="Black" Height="50" Margin="217,0,272,177" VerticalAlignment="Bottom"/>
		<Rectangle Fill="{StaticResource CE}" Stroke="Black" Height="50" Margin="217,0,272,103" VerticalAlignment="Bottom"/>
		<Rectangle Fill="{StaticResource CF}" Stroke="Black" Height="50" Margin="217,0,272,32" VerticalAlignment="Bottom"/>
		<TextBlock Height="17" HorizontalAlignment="Left" Margin="73,54,0,0" VerticalAlignment="Top" Width="69" Foreground="White" TextWrapping="Wrap"><Run Text="F"/><Run Text="A"/></TextBlock>
		<TextBlock Height="17" HorizontalAlignment="Left" Margin="73,133,0,0" VerticalAlignment="Top" Width="69" Foreground="White" TextWrapping="Wrap" Text="FB"/>
		<TextBlock Height="17" HorizontalAlignment="Left" Margin="73,196,0,0" VerticalAlignment="Top" Width="69" Foreground="White" TextWrapping="Wrap" Text="FC"/>
		<TextBlock Height="17" HorizontalAlignment="Left" Margin="73,0,0,195" VerticalAlignment="Bottom" Width="69" Foreground="White" TextWrapping="Wrap" Text="FD"/>
		<TextBlock Height="17" HorizontalAlignment="Left" Margin="73,0,0,119" VerticalAlignment="Bottom" Width="69" Foreground="White" TextWrapping="Wrap" Text="FE"/>
		<TextBlock Height="17" HorizontalAlignment="Left" Margin="73,0,0,51" VerticalAlignment="Bottom" Width="69" Foreground="White" TextWrapping="Wrap" Text="FF"/>
		<TextBlock Height="17" Margin="268,54,303,0" VerticalAlignment="Top" Foreground="White" Text="CA" TextWrapping="Wrap"/>
		<TextBlock Height="17" Margin="268,133,303,0" VerticalAlignment="Top" Foreground="White" Text="CB" TextWrapping="Wrap"/>
		<TextBlock Height="17" Margin="268,196,303,0" VerticalAlignment="Top" Foreground="White" Text="CC" TextWrapping="Wrap"/>
		<TextBlock Height="17" Margin="268,0,303,195" VerticalAlignment="Bottom" Foreground="White" Text="CD" TextWrapping="Wrap"/>
		<TextBlock Height="17" Margin="268,0,303,119" VerticalAlignment="Bottom" Foreground="White" Text="CE" TextWrapping="Wrap"/>
		<TextBlock Height="17" Margin="268,0,303,51" VerticalAlignment="Bottom" Foreground="White" Text="CF" TextWrapping="Wrap"/>
	</Grid>	

 

Style.xaml  代码:

<LinearGradientBrush x:Key="FA" EndPoint="0.5,1" StartPoint="0.5,0">
					<GradientStop Color="#FF606060" Offset="0"/>
					<GradientStop Color="Black" Offset="1"/>
					<GradientStop Color="#FE333333" Offset="0.487"/>
					<GradientStop Color="#FE161515" Offset="0.574"/>
	</LinearGradientBrush>
	<LinearGradientBrush x:Key="FB" EndPoint="0.5,1" StartPoint="0.5,0">
		<GradientStop Color="#FF6A6A6A"/>
		<GradientStop Color="#FF1A1A1A" Offset="1"/>
		<GradientStop Color="#FF504F4F" Offset="0.481"/>
		<GradientStop Color="#FF333232" Offset="0.553"/>
	</LinearGradientBrush>
	<LinearGradientBrush x:Key="FC" EndPoint="0.5,1" StartPoint="0.5,0">
		<GradientStop Color="#FFD0C3C3" Offset="0.004"/>
		<GradientStop Color="#FF393939" Offset="1"/>
		<GradientStop Color="#FF6A6A6A" Offset="0.523"/>
		<GradientStop Color="#FFA39D9D" Offset="0.469"/>
	</LinearGradientBrush>
	<LinearGradientBrush x:Key="FD" EndPoint="0.5,1" StartPoint="0.5,0">
		<GradientStop Color="#FFE6E6E6" Offset="0"/>
		<GradientStop Color="#FF979393" Offset="1"/>
		<GradientStop Color="#FFA19898" Offset="0.542"/>
		<GradientStop Color="#FFC2C0C0" Offset="0.485"/>
	</LinearGradientBrush>
	<LinearGradientBrush x:Key="FE" EndPoint="0.5,1" StartPoint="0.5,0">
		<GradientStop Color="Black" Offset="0"/>
		<GradientStop Color="#FF5C5C5C" Offset="1"/>
		<GradientStop Color="#FF1A1A1A" Offset="0.42"/>
	</LinearGradientBrush>
	<LinearGradientBrush x:Key="FF" EndPoint="0.5,1" StartPoint="0.5,0">
		<GradientStop Color="#FF4484F7" Offset="0"/>
		<GradientStop Color="#FF012D7C" Offset="1"/>
		<GradientStop Color="#FF255FC8" Offset="0.489"/>
		<GradientStop Color="#FF0343B6" Offset="0.557"/>
	</LinearGradientBrush>
	<SolidColorBrush x:Key="CA" Color="Black"/>
	<SolidColorBrush x:Key="CB" Color="#FF2B2B2B"/>
	<SolidColorBrush x:Key="CC" Color="#FF686666"/>
	<SolidColorBrush x:Key="CD" Color="#FFBCBCBC"/>
	<SolidColorBrush x:Key="CE" Color="#FFED6D00"/>
	<SolidColorBrush x:Key="CF" Color="#FF034BCE"/>

 

这样我们的色卡就走完了,这个页面留着到时候参考用;

突然发现还没进入 关于 button 的主题,

》 1. 好新建一个 UserControlCard.xaml;

》 2. 从左边选择 button 工具创建一个button;

》 3. 选择这个button 从左上角依次点开到 》 编辑副本见下图:

截图12

截图13

确认后进入编辑页面:在左下角依次选择他们,然后在右边设置相应的画笔:(使用我们刚才定义的资源库)

截图14 截图15

 

从上面下来,大概分别是(我也不太确定):

背景》

     》 鼠标移动到上面时的动画

     》 好像是类似于遮罩

文本》

不可用时》

获得焦点时》

 

最后效果看起来是这样:

截图17

 

如果不满意可以反复修改,(反复修改? 设计师的痛!):

》 选择按钮以后,

》 依次展开到编辑当前模板

 

截图18

 

恩,蓝色按钮就到这里,最重要是反复研究,而且最好编译一下在浏览器里面看实际鼠标动作的样子!

放代码了:

UserControlCard.xaml

	<Grid x:Name="LayoutRoot">
		<Rectangle Fill="{StaticResource FA}" Stroke="Black" Height="57" HorizontalAlignment="Left" VerticalAlignment="Top" Width="163"/>
		<Button Height="41" HorizontalAlignment="Left" Margin="23,7,0,0" Style="{StaticResource BlueButtonStyle}" VerticalAlignment="Top" Width="112" Content="by zhanxp" BorderThickness="2"/>
	</Grid>

Style.xaml 中自动生成的:

	<Style x:Key="BlueButtonStyle" TargetType="Button">
		<Setter Property="Background" Value="#FF1F3B53"/>
		<Setter Property="Foreground" Value="#FFFFFFFF"/>
		<Setter Property="Padding" Value="3"/>
		<Setter Property="BorderThickness" Value="1"/>
		<Setter Property="BorderBrush">
			<Setter.Value>
				<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
					<GradientStop Color="#FFA3AEB9" Offset="0"/>
					<GradientStop Color="#FF8399A9" Offset="0.375"/>
					<GradientStop Color="#FF718597" Offset="0.375"/>
					<GradientStop Color="#FF617584" Offset="1"/>
				</LinearGradientBrush>
			</Setter.Value>
		</Setter>
		<Setter Property="Template">
			<Setter.Value>
				<ControlTemplate TargetType="Button">
					<Grid>
						<VisualStateManager.VisualStateGroups>
							<VisualStateGroup x:Name="CommonStates">
								<VisualState x:Name="Normal"/>
								<VisualState x:Name="MouseOver">
									<Storyboard>
										<DoubleAnimationUsingKeyFrames Storyboard.TargetName="BackgroundAnimation" Storyboard.TargetProperty="Opacity">
											<SplineDoubleKeyFrame KeyTime="0" Value="1"/>
										</DoubleAnimationUsingKeyFrames>
									</Storyboard>
								</VisualState>
								<VisualState x:Name="Pressed">
									<Storyboard>
										<DoubleAnimationUsingKeyFrames Storyboard.TargetName="BackgroundAnimation" Storyboard.TargetProperty="Opacity">
											<SplineDoubleKeyFrame KeyTime="0" Value="1"/>
										</DoubleAnimationUsingKeyFrames>
									</Storyboard>
								</VisualState>
								<VisualState x:Name="Disabled">
									<Storyboard>
										<DoubleAnimationUsingKeyFrames Storyboard.TargetName="DisabledVisualElement" Storyboard.TargetProperty="Opacity">
											<SplineDoubleKeyFrame KeyTime="0" Value=".55"/>
										</DoubleAnimationUsingKeyFrames>
									</Storyboard>
								</VisualState>
							</VisualStateGroup>
							<VisualStateGroup x:Name="FocusStates">
								<VisualState x:Name="Focused">
									<Storyboard>
										<DoubleAnimationUsingKeyFrames Storyboard.TargetName="FocusVisualElement" Storyboard.TargetProperty="Opacity">
											<SplineDoubleKeyFrame KeyTime="0" Value="1"/>
										</DoubleAnimationUsingKeyFrames>
									</Storyboard>
								</VisualState>
								<VisualState x:Name="Unfocused"/>
							</VisualStateGroup>
						</VisualStateManager.VisualStateGroups>
						<Border x:Name="Background" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="3" BorderBrush="{StaticResource FE}" Background="{StaticResource FF}">
							<Grid Margin="1">
								<Border x:Name="BackgroundAnimation" Opacity="0">
									<Border.Background>
										<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
											<GradientStop Color="#FF1464F3" Offset="0"/>
											<GradientStop Color="#FF01215A" Offset="1"/>
											<GradientStop Color="#FF064BC6" Offset="0.489"/>
											<GradientStop Color="#FF013AA1" Offset="0.557"/>
										</LinearGradientBrush>
									</Border.Background>
								</Border>
								<Rectangle x:Name="BackgroundGradient" Fill="{StaticResource FF}" Opacity="0" OpacityMask="{StaticResource FE}"/>
							</Grid>
						</Border>
						<Rectangle x:Name="FocusVisualElement" StrokeThickness="2" RadiusX="2" RadiusY="2" Margin="1" IsHitTestVisible="false" Opacity="0">
							<Rectangle.Fill>
								<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
									<GradientStop Color="#FF085BF1" Offset="0"/>
									<GradientStop Color="#FF022F80" Offset="1"/>
									<GradientStop Color="#FF125BDE" Offset="0.489"/>
									<GradientStop Color="#FF0343B6" Offset="0.557"/>
								</LinearGradientBrush>
							</Rectangle.Fill>
						</Rectangle>
						<Rectangle x:Name="DisabledVisualElement" Fill="{StaticResource FC}" IsHitTestVisible="false" Opacity="0" RadiusX="2" RadiusY="2"/>
						<ContentPresenter x:Name="contentPresenter" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}"/>
					</Grid>
				</ControlTemplate>
			</Setter.Value>
		</Setter>
	</Style>

 

 

谢谢收看~~~

 

 

silverlight 之 – Blend 一切源于Brush(一)

silverlight 之 – Blend 之 LinearGradientBrush (二)

silverlight 之 – Blend 之 Style for Button (三)

silverlight 之 – Blend 之图形按钮(四)