c# - WPF Content Presenter 奇怪的水平对齐行为
问题描述
我正在尝试将内容演示者的内容集中在一个按钮中,它在设计器中完美居中但是当运行它时,它要么会偏离中心,要么会被切断。令我困惑的是,我有另一种风格,它做的事情相对相同,但效果很好。
这是风格;
<Style x:Key="MainButtonStyle" TargetType="{x:Type Button}">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Padding" Value="0,1"/>
<Setter Property="RenderOptions.BitmapScalingMode" Value="NearestNeighbor"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid x:Name="Chrome" Background="{TemplateBinding Background}" SnapsToDevicePixels="true">
<Grid.BindingGroup>
<BindingGroup/>
</Grid.BindingGroup>
<Border x:Name="border" CornerRadius="3,3,3,3" BorderBrush="LightGray" BorderThickness="1" Background="#FFF3F3F3" Padding="0">
<ContentPresenter
HorizontalAlignment="Center"
VerticalAlignment="Stretch"
TextElement.FontWeight="Light" Height="Auto" Margin="153.636,0.52,156,1.52" Width="Auto" UseLayoutRounding="False" SnapsToDevicePixels="False" >
</ContentPresenter>
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background" TargetName="border" Value="#330CB3EE"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="BorderBrush" TargetName="border" Value="#FF0CB3EE"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Opacity" TargetName="Chrome" Value="0.25"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
解决方案
从 Content Presenter 中删除边距:
<ContentPresenter HorizontalAlignment="Center"
VerticalAlignment="Stretch"
TextElement.FontWeight="Light"
Height="Auto"
Width="Auto"
UseLayoutRounding="False"
SnapsToDevicePixels="False" >
这个 Margin 可能是设计者添加的,与设计器中控件的布局相匹配。
推荐阅读
- python-3.x - 为什么函数的整数返回值与该整数不同
- javascript - 是否可以检查 JavaScript 中的 Firerfox 中是否有带有特殊地址的打开选项卡?
- angularjs - Ng-repeat 项目没有 $$hash 键,这会弄乱渲染
- r - 尝试使用 as.binary 将大整数转换为二进制
- inno-setup - Inno Setup 中的 IsAdmin 和 IsAdminInstallMode 有什么区别?
- html - CSS translateZ不适用于子元素
- r - 在函数中定义特定列
- c# - 为公共用户设置单独的布局
- python - 保留分数作为因子
- python - ValueError:在将列表转换为numpy数组时,只能将一个元素张量转换为Python标量