c# - 覆盖样式的特定属性

标签 c# wpf xaml

我正在为 TabControl 创建一个新样式,包括为项目创建一个新的 ItemContainerStyle。新样式工作正常,除了我需要在使用样式时向 ItemContainerStyle 添加功能的可能性。详细来说这是 Header 属性

  <TabControl x:Name="myTabControl" SelectionChanged="myTabControl_SelectionChanged">
            <TabControl.ItemContainerStyle>
                <Style TargetType="TabItem">
                    <Setter Property="Header" Value="{Binding Title}"></Setter>
                </Style>
            </TabControl.ItemContainerStyle>
        </TabControl>

效果不错。但它完全覆盖了样式。 BasedOn 属性会有所帮助,但我无权访问 ItemContainerStyle 的键,因为它嵌入在 TabControls 的样式中。如何在不完全覆盖样式的情况下简单地更新样式的属性?

谢谢

最佳答案

与 css 相比,WPF 中的样式方式略有不同。在 Wpf 中,它们完全依赖于继承,this is the basic document on how styles work .因此,如果没有为您提供 key ,我认为您在使用 BasedOn 继承时运气不好。

但是,Microsoft 确实在 Visual Studio Blend 中提供了一个有用的实用程序。在对象和时间轴窗口中,右键单击然后选择“编辑样式”,这将为您完成所有繁重的工作。如果您要对样式做很多小改动,我建议您复制一份,并给它一个键,然后使用 BasedOn 属性进行您想要的小改动。

希望对您有所帮助。

关于c# - 覆盖样式的特定属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33649576/

相关文章:

c# - 从 Collection 到 List<T> 的最快转换

c# - DateTime.ParseExact 方法 : always throws exception even with correct format 的问题

c# - WPF 自定义控件(多选组合框)的问题

c# - 用换行检测 TextBlock 中的换行符数?

c# - WPF 将枚举绑定(bind)到可见性

javascript - JQuery 设置后找不到 .NET 隐藏字段值

c# - Random.Next 总是返回相同的值

c# - MVVM 在分离项目时显示来自 VM 的新窗口

c# - 无法使用 SelectedItem = null - MVVM 清除 ListBox 选择

wpf - 在mvvm中选择与相关数据模板有关的usercontrol