我正在处理一个WPF应用程序,其中为大多数基本控件(文本框和类似的)定义了元素类型样式。我现在有一个控件,在一个控件中,在一个控件...基本上我没有办法直接改变文本框的属性,所以我在我的控件中设置属性(fontsize),希望这个属性会传播给所有的孩子的控制。不幸的是,元素类型的风格优先于我的控制属性。样式与财产继承
有什么方法可以重写这些元素类型的样式吗?
我正在处理一个WPF应用程序,其中为大多数基本控件(文本框和类似的)定义了元素类型样式。我现在有一个控件,在一个控件中,在一个控件...基本上我没有办法直接改变文本框的属性,所以我在我的控件中设置属性(fontsize),希望这个属性会传播给所有的孩子的控制。不幸的是,元素类型的风格优先于我的控制属性。样式与财产继承
有什么方法可以重写这些元素类型的样式吗?
如果我理解得很清楚,您可以在中设置TextBox
,Style
(例如:FontSize = 15)。您还有一个包含一些Textbox子项的控件。
当您设置Control FontSize=10
,则文本框孩子们字号15,而你希望它是10
这是你的问题?如果是,则发生以下情况:
FontSize是一种依赖属性。作为这样的,它的值可以通过从较高列出许多不同的供应商(从Dependency Property Setting Precedence List msdn采取简化列表)中的以下
在特定情况下,该文本框字号将根据以下来源进行设置:
FontSize=15
从样式(优先级8)FontSize=10
从控制字号(优先级为10)来自FontSize的值将获胜,因为它具有更高的优先级。
总之,根据设置优先级列表,您可以通过使用具有更高优先级的提供程序覆盖Style给出的FontSize。
我希望这有助于
如何设置元素特定属性?例如。对于TextBox是FontSize = 10,对于组合框11是?还是10个,即所有元素的标准大小?如果是这样的话,为什么你在元素样式中设置相同的值?
如果它的元素不同,那么当你设置一个控件特定的字体大小时你期望什么?它应否覆盖元素特定的字体大小?如果是的话,为什么你首先设置了元素特定的字体?应该让你的控件(或应用程序)定义一个字体大小,使其可以级联到视觉树中最小的元素(如果相同的位置在任何地方都是如此)。在这种情况下,我会建议你摆脱元素特定的字体大小。
我想也许你是正确的删除元素特定的字体大小。问题是这可能会有一些影响。如果“属性级联”优先于元素类型 – kodu
yes,那就更好了。就是这样。 – kodu
尼斯答案克劳斯。我的+1。 –
感谢您的回复,有趣的信息! – kodu