数日前、Button内のテキストの奇妙な動作に直面しました(他のContentControlsで得たのと同じ動作だと思います)。状況を説明させてください。App.xamlにTextBlockのスタイル定義があります。
<Application.Resources>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Margin" Value="10"/>
</Style>
</Application.Resources>
MainWindow.xamlには同じスタイル定義があり、App.xamlで定義されたスタイルをオーバーライドする必要があります。また、ウィンドウには3つのボタンがあります。最初のボタンで、ボタンのコンテンツ内に明示的に定義されたTextBlockコントロール。2番目のボタンでは、コードビハインドのコンテンツとして文字列を設定しました。3番目のボタンでは、コードビハインドのコンテンツとして整数値を設定しました。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;
}
そして今、私たちは何を見ていますか?予想どおり、1番目と3番目のボタンのテキストの余白は0pxですが、2番目のボタンのテキストの余白は10pxです。問題は、2番目のボタンに10pxの余白がある理由と、2番目のボタンにゼロの余白を設定する方法です(App.xamlからスタイルを削除することはできません)。
ありがとうございました!