我有一个带Button的WPF用户控件。我已经System.Windows.Media.LinearGradientBrush
复制了Extract Value to Resource
的标准按钮着色,以便查看资源中的默认设置
然后我复制了资源,但将默认颜色替换为我想要的颜色
<LinearGradientBrush EndPoint="0,1">
<GradientStop Color="#FFF3F3F3" Offset="0" />
<GradientStop Color="#FFEBEBEB" Offset="0.5" />
<GradientStop Color="#FFDDDDDD" Offset="0.5" />
<GradientStop Color="#FFCDCDCD" Offset="1" />
</LinearGradientBrush>
然后我删除了资源,所以我的完整XAML看起来像
<UserControl x:Class="Project.Detail"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="30" d:DesignWidth="800" BorderBrush="#FF5380E7" BorderThickness="0,0,0,1" >
<Grid Height="30" Width="800">
<Button Height="30" HorizontalAlignment="Left" Margin="254,0,0,0" Name="bOption3" VerticalAlignment="Top" Width="50" Click="bOption_Click" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontSize="10" FontStretch="SemiCondensed">
<Button.Background>
<LinearGradientBrush EndPoint="0,1">
<GradientStop Color="#FFD2DEF9" Offset="0" />
<GradientStop Color="#FFC5D4F7" Offset="0.5" />
<GradientStop Color="#FFAEC3F4" Offset="0.5" />
<GradientStop Color="#FF8FACF0" Offset="1" />
</LinearGradientBrush>
</Button.Background>
</Button>
</Grid>
</UserControl>
在设计师中,我看到我使用正确渐变设置的颜色,但是当我构建并运行按钮时,它们是默认的灰色。
谁能说出我做错了什么?
修改
我想保留默认按钮样式,除了初始状态背景我想要自己的颜色。我现在尝试为背景添加特定资源
<UserControl.Resources>
<LinearGradientBrush x:Key="NewBackground" EndPoint="0,1">
<GradientStop Color="#FFD2DEF9" Offset="0" />
<GradientStop Color="#FFC5D4F7" Offset="0.5" />
<GradientStop Color="#FFAEC3F4" Offset="0.5" />
<GradientStop Color="#FF8FACF0" Offset="1" />
</LinearGradientBrush>
</UserControl.Resources>
然后添加
<Button Height="30" HorizontalAlignment="Left" Margin="360,0,0,0" Background="{StaticResource NewBackground}">
再次在设计师中我可以看到应用的颜色,但是当应用程序运行时,它始终具有默认的灰色。
设计模式下的按钮
按钮在应用
我现在有几个问题
是否有一种简单的方法可以更改默认按钮的1个属性,而不是创建完整的新样式?
如果我必须重新创建完整样式,我可以在哪里访问所有默认属性以使其看起来一样吗?
谢谢
答案 0 :(得分:1)
是的,您可以使用某些属性,这取决于。假设您要更改FontSize,FontFamily,FontSize,FontStretch等.WPF提供了一些附加属性来覆盖它,例如
<Grid TextElement.FontFamily=""/>
或<Button TextElement.FontFamily=""/>
您可以尝试转到Expression blend并提取WPF控件的默认模板。从那里自定义模板。
可以找到更多信息here