【发布时间】:2023-04-05 04:11:01
【问题描述】:
我有一个包含几个(不同)项目的堆栈面板:
<StackPanel ...>
<TextBlock ... />
<CheckBox ... />
<CheckBox ... />
<Button ... />
</StackPanel>
我想将VerticalAlignment="Center" 应用于 StackPanel 的所有子级而不必将VerticalAlignent="Center" 或Style=... 应用于每个子级。所以,我想我想定义一个适用于 TextBlock、CheckBoxes 和 Button 的隐式样式。
我尝试在堆栈面板的资源中添加 <Style TargetType="FrameworkElement">,但(显然)这不起作用,因为 TargetType 创建了一个隐式 x:Key {x:Type FrameworkElement},而 TextBlock 仅自动绑定到带有 x 的样式:{x:Type TextBlock}的密钥。
所以,据我所知,我唯一的选择是:(1)在堆栈面板的资源中为所有三种类型创建三种样式,(2)创建一种样式并将其手动绑定到所有子项,( 3) 手动设置所有孩子的VerticalAlignment 选项。 我想要的是: (4) 创建一个样式并自动 将它绑定到堆栈面板的所有子项。那可能吗?或者有没有其他比(1)-(3)冗余更少的解决方案?
【问题讨论】: