VS2012>>新的Silverlight项目>>
<UserControl x:Class="SilverlightApplication2.MainPage"
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"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<Grid x:Name="LayoutRoot" >
<Button Background="Red" />
</Grid>
</UserControl>
答案 0 :(得分:1)
就像@Alex所说,渐变是Button使用的模板的结果。无论您将背景设置为什么颜色,它都会显示渐变。
更改此方法的一种方法是将模板修改为@Alex建议。
另一种方法是将Button的内容设置为Grid,然后将Grid设置为您想要的任何纯色。
<Button Height="100" Click="OnClick" Width="100">
<Button.Content>
<Grid Height="100" Width="100" IsHitTestVisible="False" Background="Blue"/>
</Button.Content>
</Button>
答案 1 :(得分:0)
这一切都取决于按钮的模板。我猜测默认模板顶部有一些模拟半透明着色或其他类似的层。用更简单的模板替换控件模板,它应该工作。您可以在MSDN上找到默认模板,您只需修改按钮一,而不是从头开始:http://msdn.microsoft.com/en-us/library/cc278069(v=vs.95).aspx
具体来说,我猜这部分是渐变:
<Border x:Name="Background" CornerRadius="3" Background="White" BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}">
<Grid Background="{TemplateBinding Background}" Margin="1">
<Border Opacity="0" x:Name="BackgroundAnimation" Background="#FF448DCA" />
<Rectangle x:Name="BackgroundGradient" >
<Rectangle.Fill>
<LinearGradientBrush StartPoint=".7,0" EndPoint=".7,1">
<GradientStop Color="#FFFFFFFF" Offset="0" />
<GradientStop Color="#F9FFFFFF" Offset="0.375" />
<GradientStop Color="#E5FFFFFF" Offset="0.625" />
<GradientStop Color="#C6FFFFFF" Offset="1" />
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
</Grid>
</Border>