WPF之Button控件应用

 测试环境: Windows xp + Microsoft Visual Studio 2010 + Microsoft Expression Blend4 + .Net4.0


具体应用:

1. 创建透明的Button  

<Image Source="back.bmp" Grid.Row="0" Stretch="UniformToFill" />
<Button x:Name="TranButton" Content="透明Button" Margin="3" Grid.Row="0">
	<Button.OpacityMask>
		<LinearGradientBrush StartPoint="0,70" EndPoint="3,0">
			<GradientStop Offset="0" Color="Black"/>
        		<GradientStop Offset="1" Color="Transparent"/>
		</LinearGradientBrush>
	</Button.OpacityMask>
</Button>

2. 创建带图片的按钮

<Button x:Name="ImageButton" Margin="3" Grid.Row="1" HorizontalAlignment="Left">
	<StackPanel Margin="1" Orientation="Horizontal" Width="620">
		<Image Source="back.bmp" Stretch="UniformToFill" Width="160"/>
		<TextBlock Width="130" />
		<TextBlock Text="图片按钮" Margin="1,15,1,1"/>
	</StackPanel>
</Button>

3. 鼠标移动变色的按钮

    1) 首先设置鼠标的样式

<Style x:Key="ButtonFocusVisual">
	<Setter Property="Control.Template">
		<Setter.Value>
			<ControlTemplate>
				<Rectangle Margin="3" SnapsToDevicePixels="true" Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" StrokeThickness="1" StrokeDashArray="1 2"/>
			</ControlTemplate>
		</Setter.Value>
	</Setter>
</Style>
<LinearGradientBrush x:Key="ButtonNormalBackgroundFill" EndPoint="0.5,1" StartPoint="0.5,0">
	<GradientStop Color="#FFFFFFFF" Offset="0"/>
	<GradientStop Color="#FFF0F0EA" Offset="0.9"/>
</LinearGradientBrush>
<SolidColorBrush x:Key="ButtonBorder" Color="#FF003C74"/>
<Style x:Key="MouseButtonStyle" TargetType="{x:Type Button}">
	<Setter Property="FocusVisualStyle" Value="{StaticResource ButtonFocusVisual}"/>
	<Setter Property="Background" Value="{StaticResource ButtonNormalBackgroundFill}"/>
	<Setter Property="BorderBrush" Value="{StaticResource ButtonBorder}"/>
	<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
	<Setter Property="HorizontalContentAlignment" Value="Center"/>
	<Setter Property="VerticalContentAlignment" Value="Center"/>
	<Setter Property="Template">
		<Setter.Value>
			<ControlTemplate TargetType="{x:Type Button}">
				<Microsoft_Windows_Themes:ButtonChrome x:Name="Chrome" BorderBrush="{TemplateBinding BorderBrush}" 
				 	Fill="{TemplateBinding Background}" RenderMouseOver="{TemplateBinding IsMouseOver}" 
				 	RenderPressed="{TemplateBinding IsPressed}" RenderDefaulted="{TemplateBinding IsDefaulted}"
				 	SnapsToDevicePixels="true" ThemeColor="NormalColor">
				       <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
					     Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" 
					     SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" 
				             VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
				</Microsoft_Windows_Themes:ButtonChrome>
   				        <ControlTemplate.Triggers>
						<Trigger Property="IsKeyboardFocused" Value="true">
							<Setter Property="RenderDefaulted" TargetName="Chrome" Value="true"/>
						</Trigger>
						<Trigger Property="ToggleButton.IsChecked" Value="true">
							<Setter Property="RenderPressed" TargetName="Chrome" Value="true"/>
						</Trigger>
						<Trigger Property="IsEnabled" Value="false">
							<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
						</Trigger>									
						<Trigger Property="IsMouseOver" Value="true">						
							<Setter Property="Background" Value="Blue" />						
						</Trigger>			
					</ControlTemplate.Triggers>
			</ControlTemplate>
		</Setter.Value>
	</Setter>
</Style>
    2)设置Button 按钮

<Button x:Name="MouseButton" Margin="3" Grid.Row="2" Content="鼠标移动变色按钮" Style="{DynamicResource MouseButtonStyle}"/>

4. 创建有倒影的Button

<StackPanel Orientation="Vertical" Margin="3" Grid.Row="5" >
	<Button x:Name="ReflectionButton" Content="具有倒影的按钮"  Height="35" Margin="3" />		
	<Rectangle RenderTransformOrigin="1,0.5" Height="40">
	      <Rectangle.Fill>
  	              <VisualBrush Visual="{Binding ElementName=ReflectionButton}"></VisualBrush>
	      </Rectangle.Fill>
		      <Rectangle.OpacityMask>
		           <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
		                <GradientStop Offset="0.3" Color="Transparent"></GradientStop>
		                <GradientStop Offset="1" Color="Red"></GradientStop>
		            </LinearGradientBrush>
		      </Rectangle.OpacityMask>
		      <Rectangle.RenderTransform>
		            <ScaleTransform ScaleY="-1"></ScaleTransform>
		      </Rectangle.RenderTransform>
	    </Rectangle>
</StackPanel>

5. 改变Button显示的外观

<Button x:Name="TypeButton" Margin="3" Grid.Row="3" Content="改变鼠标形状按钮">
       <Button.Clip>
               <EllipseGeometry RadiusX="90" RadiusY="132" Center="310,135"></EllipseGeometry>                                      
       </Button.Clip>
</Button> 

6. 创建有下拉按钮的Button

<Button x:Name="TwoButton" Margin="3" Grid.Row="4" HorizontalAlignment="Left">
	<Button.Content>
		<StackPanel Orientation="Horizontal" Margin="1">
			<TextBlock Width="250"/>
			<TextBlock Text="可以点击下拉框的按钮"/>
			<TextBlock Width="218"/>
			<Polygon Stroke="Black" StrokeThickness="1" Points="0,0,15,20,30,0,0,0" Fill="Black"/>
		</StackPanel>
	</Button.Content>
</Button>


  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在Blend中创建WPF自定义Button件,可以按照以下步骤进行: 1. 打开Blend,创建一个新的WPF项目。 2. 在“项目”面板中,右键单击“件”文件夹,选择“添加”->“新建项”。 3. 在“添加新项”对话框中,选择“WPF”->“Custom Control”,设置名称为“CustomButton”并选择位置,点击“添加”按钮。 4. Blend会自动生成一个名为“CustomButton”的自定义件的类文件和一个默认的件模板文件。 5. 双击件模板文件,进入“编辑模板”模式。在这里,你可以自由地编辑件的外观和布局。 6. 在“对象和时间”面板中,可以选择件的外观和行为。例如,你可以添加按钮、文本框等件,设置它们的属性和事件处理程序。 7. 在件模板中,找到名为“PART_Button件的模板,这是自定义件中的按钮。你可以编辑它的外观和行为,以实现自定义Button件的功能和样式。 8. 在编辑完成后,保存模板文件并退出“编辑模板”模式。 9. 在CustomButton类中,添加自定义属性和事件处理程序,以实现自定义Button件的功能。 10. 在应用程序中,使用自定义Button件,只需要在XAML中添加一个CustomButton标记,然后设置它的属性和事件处理程序即可。 以上就是在Blend中创建WPF自定义Button件的基本步骤。需要注意的是,在创建件时,应该考虑件的可重用性和灵活性,以便在不同的场景中使用。同时,应该设计好件的外观和行为,以便用户可以方便地使用和定制件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值