StringFormat 的问题
我正在尝试使用 XAML 中的 StringFormat 来填充 TabItem 上的标题文本。我使用的代码是:
<TabControl.ItemContainerStyle>
<Style TargetType="{x:Type TabItem}" BasedOn="{StaticResource TabItemStyle}">
<Setter Property="Header" Value="{Binding MyValue, StringFormat='My Value is {0}'}" />
<EventSetter Event="FrameworkElement.Loaded" Handler="OnTabItemLoaded" />
<EventSetter Event="FrameworkElement.Unloaded" Handler="OnTabItemUnloaded" />
</Style>
</TabControl.ItemContainerStyle>
问题是我的标头仅显示标头中的 MyValue
值,而不是格式化文本。
I'm trying to use the StringFormat in XAML to populate the Header text on a TabItem. The code I am using is:
<TabControl.ItemContainerStyle>
<Style TargetType="{x:Type TabItem}" BasedOn="{StaticResource TabItemStyle}">
<Setter Property="Header" Value="{Binding MyValue, StringFormat='My Value is {0}'}" />
<EventSetter Event="FrameworkElement.Loaded" Handler="OnTabItemLoaded" />
<EventSetter Event="FrameworkElement.Unloaded" Handler="OnTabItemUnloaded" />
</Style>
</TabControl.ItemContainerStyle>
The problem is my header is only showing the value of MyValue
in the Header and not the formatted text.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
因为 Header 属性不是字符串属性。
您需要使用包含 TextBlock 的标头模板,您可以使用字符串格式绑定 Text 属性
Because the Header property is not a string property.
You need to use a headertemplate containing a TextBlock which you can bind the Text property using your stringformat
最简单的解决方案是使用 HeaderStringFormat 属性:
每当您可以将字符串分配给通用内容属性时,WPF 似乎都会遵循此模式,另一个示例是 ContentControl.ContentStringFormat。
The simplest solution is to use the
HeaderStringFormat
property:WPF seems to follow this pattern whenever you can assign a string to a generic content property, another example would be ContentControl.ContentStringFormat.