标签项 header 样式继承
Tab Item header styling inheritance
我确定我忽略了一些简单的事情,但我一生都无法弄清楚。我刚刚开始使用 MahApps Mmetro UI,它已将样式应用到我的所有选项卡。但是,在某些选项卡上,我需要能够进行一些字符串格式化,因此 headers 声明如下:
<TabItem Content="{Binding TaskList}">
<TabItem.Header>
<TextBlock Text="{Binding Count, StringFormat=Tasks (\{0\})}" />
</TabItem.Header>
</TabItem>
具有这样定义的 headers 的选项卡项目不会继承 Metro UI 样式。有没有办法将样式应用于所有 headers?
不幸的是,BindingBase.StringFormat
只在目标属性是string
类型时使用,而TabItem.Header
是object
类型,所以绑定它直接指定 StringFormat
无法给出预期的结果。幸运的是,您可以使用 TabItem.HeaderStringFormat
属性 来格式化 header 文本,同时保持原始样式:
<TabItem Header="{Binding Count}" HeaderStringFormat="Tasks ({0})" (...) />
请注意 HeaderStringFormat
仅在 Header
的值显示为文本时使用(当 Header
包含控件等时将被忽略)。
我确定我忽略了一些简单的事情,但我一生都无法弄清楚。我刚刚开始使用 MahApps Mmetro UI,它已将样式应用到我的所有选项卡。但是,在某些选项卡上,我需要能够进行一些字符串格式化,因此 headers 声明如下:
<TabItem Content="{Binding TaskList}">
<TabItem.Header>
<TextBlock Text="{Binding Count, StringFormat=Tasks (\{0\})}" />
</TabItem.Header>
</TabItem>
具有这样定义的 headers 的选项卡项目不会继承 Metro UI 样式。有没有办法将样式应用于所有 headers?
不幸的是,BindingBase.StringFormat
只在目标属性是string
类型时使用,而TabItem.Header
是object
类型,所以绑定它直接指定 StringFormat
无法给出预期的结果。幸运的是,您可以使用 TabItem.HeaderStringFormat
属性 来格式化 header 文本,同时保持原始样式:
<TabItem Header="{Binding Count}" HeaderStringFormat="Tasks ({0})" (...) />
请注意 HeaderStringFormat
仅在 Header
的值显示为文本时使用(当 Header
包含控件等时将被忽略)。