FlowDocumentに空のスタイルを設定すると、子要素のフォントが変わってしまう
OS: Windows7、Windows10
.NET Framework: 3.0、4.5
開発環境: VisualStudio 2013、VisualStudio 2015
WPFでスタイルを設定していたところ、
FlowDocument
のスタイルが意図しない挙動を起こしました。
<Window
x:Class="WpfSandBox.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="200"
Width="200">
<StackPanel>
<!-- スタイル未設定 -->
<RichTextBox>
<FlowDocument>
<Paragraph>ABC</Paragraph>
</FlowDocument>
</RichTextBox>
<!-- 空のスタイル設定 -->
<RichTextBox>
<FlowDocument>
<FlowDocument.Style>
<Style TargetType="FlowDocument"></Style>
</FlowDocument.Style>
<Paragraph>ABC</Paragraph>
</FlowDocument>
</RichTextBox>
<!-- フォントのスタイル設定 -->
<RichTextBox>
<FlowDocument>
<FlowDocument.Style>
<Style TargetType="FlowDocument">
<Setter Property="FontFamily" Value="{x:Static SystemFonts.MessageFontFamily}"/>
<Setter Property="FontSize" Value="{x:Static SystemFonts.MessageFontSize}"/>
<Setter Property="FontStyle" Value="{x:Static SystemFonts.MessageFontStyle}"/>
<Setter Property="FontWeight" Value="{x:Static SystemFonts.MessageFontWeight}"/>
</Style>
</FlowDocument.Style>
<Paragraph>ABC</Paragraph>
</FlowDocument>
</RichTextBox>
</StackPanel>
</Window>
2番目のRichTextBox
の表示だけ見た目が異なります。
スタイルに何も設定していないにも関わらず、
子要素のParagraph
のフォントとフォントのサイズが変化したのです。
3番目のRichTextBox
のように、同じフォントを設定すると元に戻りました。
ここで質問となるのですが、
このスタイルの挙動はFlowDocument
に何か問題があるのでしょうか?
それとも、フォントが変わってしまうのは正しいスタイルの挙動なのでしょうか?
(直感的には設定していないプロパティへ影響を与えるのは好ましくないように思えます。)