尝试创建可以托管其他控件的 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 并不是我唯一担心的事情。我可能还需要其他可继承的财产。
可以采取什么措施来解决这个问题?
给定的 xaml 应该可以正常工作。您可能在某处有一个默认的 TextBox 样式来设置字体大小。看依赖属性值优先级 https://msdn.microsoft.com/library/ms743230%28v=vs.100%29.aspx#listing- 本地值优先于样式设置器(因此可以直接在 TextBox 上设置字体大小),而样式设置器优先于“继承”值(这就是为什么在 UserControl 或 ContentPresenter 上设置字体大小不起作用的原因 - 假设这里确实有一个默认样式在起作用)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)