gpt4 book ai didi

c# - 防止 ItemContainerStyle 覆盖已设置的 Style

转载 作者:太空狗 更新时间:2023-10-30 00:16:57 27 4
gpt4 key购买 nike

例如,有没有办法防止 ItemContainerStyle 覆盖已经设置的样式(通过 <Style TargetType="{x:Type MenuItem}">)?

MenuItem 的样式已在 ResourceDictionary 中定义XAML 文件,在应用程序启动时加载:

<ResourceDictionary>
<Style TargetType="{x:Type MenuItem}">
<Setter Property="Foreground" Value="{DynamicResource TextForeground}"/>
.. and so on
</Style>
</ResourceDictionary>

我有以下 MenuItem XAML 定义。 MenuItem包裹在 ContextMenu 中通用的 TextBlock (我想值得一提)。菜单本身一切顺利,但它的子项(枚举的实际值)获得不同的样式,因为 ItemContainerStyle覆盖它:

<MenuItem Header="DisplayType" 
Name="DisplayTypeMenu"
ItemsSource="{Binding Source={StaticResource DisplayTypeValues}}">

<MenuItem.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="MenuItem.IsCheckable" Value="True" />

<Style.Triggers>
<Trigger Property="MenuItem.Header"
Value="{x:Static enums:DisplayType.Description}" >
<Setter Property="MenuItem.IsChecked" Value="True" />
</Trigger>
</Style.Triggers>

</Style>
</MenuItem.ItemContainerStyle>

</MenuItem>

ItemContainerStyle 源于 another question of mine .

MenuItem 放置在其他层中,顶层是自定义的 ContentControl :

public class SomeGradientPanel : ContentControl
{
public SomeGradientPanel ()
{
DefaultStyleKey = typeof(SomeGradientPanel );
}
}

上面的代码似乎是问题根源的一个很好的候选者!?

因此,完整的结构是:

<SomeNameSpace:SomeGradientPanel>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="40"></RowDefinition>
<RowDefinition Height="20"></RowDefinition>
</Grid.RowDefinitions>

<TextBlock x:Name="SomeLabel">

<TextBlock.ContextMenu>
<ContextMenu>
<!-- The MenuItem code snippet from above !-->
</ContextMenu>
</TextBlock.ContextMenu>

</TextBlock>

</Grid>
</SomeNameSpace:SomeGradientPanel>

我可以引用已经定义的Style吗?对于 MenuItemItemContainerStyle 内?样式覆盖仅发生在所述 MenuItem 的子项上,父级具有预期的样式。

感谢您的参与!

最佳答案

你试过吗

<MenuItem.ItemContainerStyle> 
<Style TargetType="MenuItem" BasedOn="{StaticResource {x:Type MenuItem}}">

关于c# - 防止 ItemContainerStyle 覆盖已设置的 Style,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4430807/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com