- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
例如,有没有办法防止 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
吗?对于 MenuItem
在 ItemContainerStyle
内?样式覆盖仅发生在所述 MenuItem
的子项上,父级具有预期的样式。
感谢您的参与!
最佳答案
你试过吗
<MenuItem.ItemContainerStyle>
<Style TargetType="MenuItem" BasedOn="{StaticResource {x:Type MenuItem}}">
关于c# - 防止 ItemContainerStyle 覆盖已设置的 Style,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4430807/
我有一个 ListView,其中行交替颜色:
我创建了用作 ListView 项目模板的样式,其中包含一个 CheckBox 和一个 TextBlock:
我正在 VS 2012 中使用 XAML/WPF。我承认我还不太了解模板和样式。 我在 application.xaml 文件中定义了一个样式,如下所示: 现在我想将此样式应用于我的 L
我创建了以下菜单。现在我想在不同的窗口上使用相同的菜单布局,并考虑将下面的代码转移到 Generic.xaml 并只在需要时引用它。最好的方法是什么,以便实际使用时间尽可能短?
我正在尝试使用以下 xaml 将一个 RibbonGroup 和几个 RibbonButton 绑定(bind)到我的 View 模型: 这给了我以下错
我正在尝试将 ItemTemplate 和 ItemContainerStyle 应用于 ItemsControl:- 然而 ItemContainerStyle 似乎被忽略了(但如果我删除了 It
我尝试使用 TreeView 显示分层数据,并且我想为不同的子类型设置不同的 DataTemplates。 但问题是,我的风格没有得到应用。 也许这是一个非常简单的错误,但我真的没有找到它。
只是一个简短的问题。我可以同时使用 ListView.Resources 和 ListView.ItemContainerStyle 吗?如果我一起使用,似乎只有其中一个在工作..
已经使用方法为TreeViewItems设置了一个fullrowselect这里:Lee Campbell horizontal stretch for treeviewitems 这适用于顶级项目。
例如,有没有办法防止 ItemContainerStyle 覆盖已经设置的样式(通过 )? MenuItem 的样式已在 ResourceDictionary 中定义XAML 文件,在应用程序启动时加
我在从 TabControl 的 ItemContainerStyle 中的默认样式继承时遇到问题。 目的是继承主题风格,只改变一些属性。 如果我编写此 XAML 代码,则使用默认的 TabItem
我正在按照此处绑定(bind) MenuItem 的示例进行操作。到数据对象。
我已经看到了一些其他 Silverlight 'vs' 的问题,但找不到这个特定比赛的任何问题。 我正在尝试定义我的对象绑定(bind)到 ListBox 的方式将显示。我定义了 DataTempla
以下类似于我要完成的工作。但是,我得到了错误 Invalid PropertyDescriptor value. 在模板上 Setter .我怀疑这是因为我没有指定 TargetType对于Style
我有以下样式和列表框:
我有两个列表框,默认的和自定义的。一个正确使用 DataTemplateSelector 而另一个只使用默认的 DataTemplates 从不调用选择器; //shows correctly //
我的窗口的 DataContext 是一个 IDictionary>。 任何人都可以向我解释为什么这工作正常: 但这不是:
我正在尝试将集合绑定(bind)到 ItemsControl,将 Canvas 作为项目面板,并将每个项目的 Canvas.Left 和 Top 绑定(bind)到项目对象的属性。基本上我正在尝试重新
我正在尝试将集合绑定(bind)到 ItemsControl,将 Canvas 作为项目面板,并将每个项目的 Canvas.Left 和 Top 绑定(bind)到项目对象的属性。基本上我正在尝试重新
我有一个 UserControl ( FahrtControl.xaml ) 与 ListView .这个UserControl绑定(bind)到 ItemsControl在我的MainWindow.
我是一名优秀的程序员,十分优秀!