Tag: 风格的

在WPF中设置嵌套元素的样式

假设你有一个嵌套的元素结构,例如一个带MenuItems的ContextMenu: <ContextMenu Style="{StaticResource FooMenuStyle}"> <MenuItem Style="{StaticResource FooMenuItemStyle}"/> … </ContextMenu> 您可以轻松地将样式或模板应用于ContextMenu或MenuItem元素。 但是,如果MenuItem样式属于Menu样式,将其添加到每个MenuItem元素是非常麻烦和冗余的。 有没有办法将这些自动应用到子元素? 所以你可以简单的写下这个: <ContextMenu Style="{StaticResource FooMenuStyle}"> <MenuItem/> … </ContextMenu> 如果FooMenuStyle可以包含MenuItem元素的样式,这将是整洁,但似乎不可能。 编辑:菜单的例子可能是误导,因为我不知道ItemContainerStyle和意图是一个通用的解决scheme。 基于这两个答案,我提出了两个解决scheme:一个通用的变体和一个ItemContainerStyle等: <Style x:Key="FooMenuItem" TargetType="{x:Type MenuItem}"> … </Style> <Style x:Key="FooMenu" TargetType="{x:Type ContextMenu}"> <!– Variant for specific style attribute –> <Setter Property="ItemContainerStyle" Value="{StaticResource FooMenuItem}"/> <!– General variant –> <Style.Resources> <Style TargetType="{x:Type MenuItem}" BasedOn="{StaticResource FooMenuItem}"/> </Style.Resources> </Style> […]