wpf - 字符串格式的问题

标签 wpf xaml string-formatting

我正在尝试使用 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 的值在标题中而不是格式化的文本中。

最佳答案

因为 Header 属性不是字符串属性。

您需要使用包含 TextBlock 的 headertemplate,您可以使用您的 stringformat 绑定(bind) Text 属性

<TabControl.ItemContainerStyle> 
    <Style TargetType="{x:Type TabItem}" BasedOn="{StaticResource TabItemStyle}"> 
        <Setter Property="HeaderTemplate">
          <Setter.Value>
            <DataTemplate>
              <TextBlock Text="{Binding MyValue, StringFormat='My Value is {0}'}" /> 
            </DataTemplate>
          </Setter.Value>
        </Setter>
        <EventSetter Event="FrameworkElement.Loaded" Handler="OnTabItemLoaded" /> 
        <EventSetter Event="FrameworkElement.Unloaded" Handler="OnTabItemUnloaded" /> 
    </Style> 
</TabControl.ItemContainerStyle>

关于wpf - 字符串格式的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7409934/

相关文章:

wpf - 对 ItemsControl 的插入进行动画处理

wpf - 将 <object property ="{StaticResource key}".../> 中的 Key 绑定(bind)到一个值

java - 字符串格式 Thymeleaf Spring Boot

c# - 在自定义控件上绑定(bind) StringFormat

wpf - 如何在WPF中使用绑定(bind)的StringFormat中的引号

c# - 设计期间的 MarkupExtension.ProvideValue(IServiceProvider serviceProvider)

c# 添加打开 wpf 程序的虚拟打印机?

c# - 将已编辑的 XML 文档保存到任何位置?

c# - WPF UserControl 如何继承 WPF UserControl?

wpf - 在这种情况下,为什么 ActualWidth 和 ActualHeight 为 0.0?