FontSize 未在 Contentpresenter 和 ContentControl 中继承的解决方法

Ami*_*san 5 wpf xaml

试图使 UserControl 可以承载其他控件。以下是相关代码。

<UserControl … … … … >
  <Grid DataContext="{Binding RelativeSource={RelativeSource 
            Mode=FindAncestor, AncestorType={x:Type UserControl}}}">
      … … …
     <ContentPresenter Content="{Binding SomeContent}"/>
      … … …
  </Grid>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

并使用此 UserControl 如下 -

<myCtrl:ContainerUserControl FontSize="18pt">
    <myCtrl:ContainerUserControl.SomeContent>
        <Grid>
            <TextBox Text="Hello World"/>
        </Grid>
    </myCtrl:ContainerUserControl.SomeContent>
</myCtrl:ContainerUserControl >
Run Code Online (Sandbox Code Playgroud)

问题是 FontSize 没有继承到 TextBox。我可以将 FontSize 设置为 TextBox 但这不是一个优雅的解决方案。我试过使用 ContentControl 但没有改变。也尝试使用

<ContentPresenter TextElement.FontSize="{Binding FontSize}" Content="{Binding SomeContent}"/>
Run Code Online (Sandbox Code Playgroud)

也不行。FontSize 并不是我唯一担心的事情。我可能还需要其他属性来继承。

可以做些什么来解决这个问题?

Pie*_*oet 5

给定的 xaml 应该可以正常工作。您可能在某处有一个默认的 TextBox 样式来设置字体大小。请参阅依赖属性值优先级- 本地值优先于样式设置器(因此可以直接在 TextBox 上设置字体大小),而样式设置器优先于“继承”值(这就是为什么在 UserControl 或 ContentPresenter 上设置字体大小不起作用)不起作用 - 假设这里确实有默认样式在工作)。