C# 相同的按钮,但外观不同WPF
我的Window.xaml上有几个按钮, 有趣的是,当我运行应用程序时,即使我对每个应用程序使用相同的代码,它们看起来也不一样 以下是截图: 可以注意到它们的边框在Y按钮上看起来不一样 下面是我为每个自定义按钮编写的代码:X、Y和ZC# 相同的按钮,但外观不同WPF,c#,wpf,button,styles,C#,Wpf,Button,Styles,我的Window.xaml上有几个按钮, 有趣的是,当我运行应用程序时,即使我对每个应用程序使用相同的代码,它们看起来也不一样 以下是截图: 可以注意到它们的边框在Y按钮上看起来不一样 下面是我为每个自定义按钮编写的代码:X、Y和Z <Button x:Name="btnX" Grid.Column="1" FontSize="15" BorderThickness="1" Content="X" Horizo
<Button x:Name="btnX"
Grid.Column="1"
FontSize="15"
BorderThickness="1"
Content="X"
HorizontalContentAlignment="Center"
VerticalContentAlignment="Center"
Foreground="Black"
Background="#d3d3d3"
BorderBrush="Black" Margin="5">
<Button.Template>
<ControlTemplate TargetType="{x:Type Button}">
<Border BorderThickness="{TemplateBinding BorderThickness}"
BorderBrush="{TemplateBinding BorderBrush}"
Background="{TemplateBinding Background}">
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
</Border>
</ControlTemplate>
</Button.Template>
</Button>
<Button x:Name="btnZ"
Grid.Column="2"
FontSize="15"
Content="Z"
BorderThickness="1"
HorizontalContentAlignment="Center"
VerticalContentAlignment="Center"
Foreground="Black"
Background="#d3d3d3"
BorderBrush="Black" Margin="5">
<Button.Template>
<ControlTemplate TargetType="{x:Type Button}">
<Border BorderThickness="{TemplateBinding BorderThickness}"
BorderBrush="{TemplateBinding BorderBrush}"
Background="{TemplateBinding Background}">
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
</Border>
</ControlTemplate>
</Button.Template>
</Button>
<Button x:Name="btnY"
Grid.Column="2"
Grid.Row="1"
FontSize="15"
Content="Y"
BorderThickness="1"
HorizontalContentAlignment="Center"
VerticalContentAlignment="Center"
Foreground="Black"
Background="#d3d3d3"
BorderBrush="Black" Margin="5">
<Button.Template>
<ControlTemplate TargetType="{x:Type Button}">
<Border BorderThickness="{TemplateBinding BorderThickness}"
BorderBrush="{TemplateBinding BorderBrush}"
Background="{TemplateBinding Background}">
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
</Border>
</ControlTemplate>
</Button.Template>
</Button>
我发现在我的按钮上设置SnapsToDevicePixels=True和UseLayoutRounding=True解决了这个问题,我不确定这是否是最好的答案,但这确实帮助了我
设置此属性后的按钮:
边框现在看起来一样了,黑色也应该一样。有什么不同吗?@NikhilAgrawal难道你没注意到它们的边框看起来不一样吗?我对每个按钮都使用了黑色边框刷,其中一些看起来像是我偶然使用的灰色?我不确定这是否是最好的答案,但这确实帮助了我。它是。WPF使用亚像素渲染,当控件定位在两个像素之间时会产生这种奇怪的效果,通常是因为您有一个使用百分比进行定位的容器。您发现的属性会稍微更改控件的位置,使其适合屏幕像素。我无法理解为什么它没有按默认值激活。@KevinGosse是的,我可以告诉你当BorderThickness为1时它是很好的,但如果你将它更改为1.5或smth,它就会再次开始变差,比如你给了上边框1.5和下边框1.5,其余的是1,真的很奇怪,所以我现在就把它保持在1像素的厚度上。