前些日子,我遇到了一个奇怪的问题,就是在按钮(我猜其他内容控件也会有同样的问题)中的文本表现异常。让我来解释一下这个情况。我在 App.xaml 中定义了 TextBlock 的样式:
<Application.Resources>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Margin" Value="10"/>
</Style>
</Application.Resources>
在MainWindow.xaml文件中,我有一个相同的样式定义,它应该覆盖在App.xaml中定义的样式。此外,我在窗口中有3个按钮。对于第一个按钮,我明确地在按钮的内容中定义了TextBlock控件。对于第二个按钮,我在代码中设置了一个字符串作为内容。对于第三个按钮,我在代码中设置了一个整数值作为内容。以下是MainWindow.xaml的代码:
<StackPanel>
<StackPanel.Resources>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Margin" Value="0"/>
</Style>
</StackPanel.Resources>
<Button Name="Button1">
<Button.Content>
<TextBlock Text="Button with text block"/>
</Button.Content>
</Button>
<Button Name="Button2" />
<Button Name="Button3" />
</StackPanel>
以及MainWindow.xaml.cs:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
Button2.Content = "Button with string";
Button3.Content = 16;
}
现在我们看到了什么?正如预期,第一个和第三个按钮中的文本都没有边距,但是第二个按钮中的文本有10px的边距!问题是:为什么第二个按钮有10px的边距,并且如何为第二个按钮设置零边距(不可能从App.xaml中删除样式)?
谢谢!