我有一个简单的问题,发现什么都解决不了。我在XAML WPF主窗口(Visual Studio 16.1)中有一个按钮,我只需要文本内容居中对齐即可。在设计器窗口中,如第一个图像所示,它看起来不错。当我运行窗口(调试或发布)时,我得到第二个图像(剩下的多余的图像) 边距显示只是裁剪的产物。
就好像添加了填充。我已经进行了详尽的搜索,并尝试了很多建议,这些建议通常是在XAML或代码中设置Padding或HorizontalContentAlignment的某种形式,但是毫无用处。即使没有任何背景或边框,也无济于事。这是XAML:
<Button x:Name="btRefresh" Content="Refresh"
Grid.Column="2" Grid.Row="1"
Click="btRefresh_Click"
HorizontalAlignment="Stretch"
Margin="5,0"
Background="{StaticResource ccButton1}"
BorderBrush="{StaticResource BorderColor1}"
BorderThickness="2"
FontWeight="SemiBold"
/>
我也尝试编辑默认模板,但是其中没有任何东西会影响简单对齐。除此之外,它确实与设计器完美契合,因此,实际上没有其他属性需要根据所有文档进行设置。
我不是唯一遇到这种情况的人,因为它是一个基本的按钮。
感谢您的帮助!
JCK
答案 0 :(得分:0)
根据我所看到的,您是否为项目中的按钮定义了另一个通用样式?或应用其他主题?如果是这样,可能是因为它具有取代的默认设置而给您带来了问题?我不相信默认的蓝色背景和黑色边框吗?因此,通过检测您确定项目中特定颜色的两个静态资源来进行检测。可能是一种潜在的样式,可能会导致您的需求失真?
答案 1 :(得分:0)
使用 VerticalContentAlignment =“ Center” 和 HorizontalContentAlignment =“ Center” 属性
<Button x:Name="btRefresh" Content="Refresh"
Grid.Column="2" Grid.Row="1"
Click="btRefresh_Click"
HorizontalAlignment="Stretch"
Margin="5,0" VerticalContentAlignment="Center"
HorizontalContentAlignment="Center"
Background="{StaticResource ccButton1}"
BorderBrush="{StaticResource BorderColor1}"
BorderThickness="2"
FontWeight="SemiBold"
/>
它不起作用意味着您的按钮将受其他样式的影响。
答案 2 :(得分:0)
谢谢大家的回应! DRap和Andy认为样式冲突是正确的,尤其是Andy在识别文本块样式时。我的应用程序级文本块的左边距为10,因此我命名了该样式并将其应用于每个文本块。只需更改按钮样式(类似于下面的样式)也是可以的,但是我无法弄清楚在其中包含按钮的语法。
<Button x:Name="btRefresh"
Grid.Column="2" Grid.Row="1"
Click="btRefresh_Click"
Style="{DynamicResource ButtonNrml}">
<Button.Content>
<StackPanel>
<TextBlock Margin="0" Text="Refresh Data"/>
</StackPanel>
</Button.Content>
</Button>
但是,如果样式存在冲突,它是否应该在设计器中而不是仅在运行时显示?
再次感谢! JCK