UWP如何修改PivotHeaderItem样式?为何Page.Resources中样式自动生效?
UWP 自定义PivotHeaderItem样式自动生效原理解释
- 核心是XAML的隐式样式机制:你定义的样式仅设置了
TargetType="PivotHeaderItem",没有指定x:Key属性,这类样式属于隐式样式,会自动应用到当前资源作用域内所有类型完全匹配的控件,不需要手动为控件指定Style属性。 - 样式作用域覆盖了Pivot内部生成控件:该样式定义在
Page.Resources下,作用域是当前整个Page页面内的所有元素。你没有手动声明PivotHeaderItem,但Pivot控件的默认模板会自动生成PivotHeaderItem容器承载每个PivotItem的Header内容,这些动态生成的控件属于当前Page的视觉树范围,会命中该隐式样式。 - 符合XAML资源查找逻辑:UWP控件加载时会沿着视觉树从下往上查找匹配资源:优先查找自身的Resources,再依次查找父容器、上级容器的Resources,直到Page.Resources、Application.Resources。你的Page级样式会被Pivot内部生成的
PivotHeaderItem检索到并应用,所以不需要额外绑定就会自动生效。
如果需要缩小样式生效范围,只需要把样式定义放到更下层的容器Resources中即可,比如放到包裹Pivot的Grid的Resources里,就只会对该Grid内的Pivot生效。
内容的提问来源于stack exchange,提问作者PremKumar Shanmugam
相关产品推荐
相关产品推荐

