FontSize的替代方法未在Contentpresenter和ContentControl

时间:2015-11-11 19:29:44

标签: wpf xaml

尝试制作可以托管其他控件的UserControl。以下是相关代码。

<UserControl … … … … >
  <Grid DataContext="{Binding RelativeSource={RelativeSource 
            Mode=FindAncestor, AncestorType={x:Type UserControl}}}">
      … … …
     <ContentPresenter Content="{Binding SomeContent}"/>
      … … …
  </Grid>
</UserControl>

使用此UserControl如下 -

<myCtrl:ContainerUserControl FontSize="18pt">
    <myCtrl:ContainerUserControl.SomeContent>
        <Grid>
            <TextBox Text="Hello World"/>
        </Grid>
    </myCtrl:ContainerUserControl.SomeContent>
</myCtrl:ContainerUserControl >

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

<ContentPresenter TextElement.FontSize="{Binding FontSize}" Content="{Binding SomeContent}"/>

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

可以采取哪些措施来解决这个问题?

1 个答案:

答案 0 :(得分:4)

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