【问题标题】:Binding StringFormat doesn't seem to work correctly绑定 StringFormat 似乎无法正常工作
【发布时间】:2010-10-18 23:05:25
【问题描述】:

我有一个像这样的 DataGrid 和一个 Expander:

<StackPanel>
<my:DataGrid Name="dataGrid1" AutoGenerateColumns="False"  ItemsSource="{Binding}">...</my:DataGrid>
<Expander Header="{Binding ElementName=dataGrid1, Path=SelectedItem.Name, StringFormat=Details of {0}}">...</Expander>
</StackPanel>

绑定很好,但由于某种原因,字符串格式不起作用。它始终只显示值 dataGrid1.SelectedItem.Name 我也试过:

StringFormat=Details of \{0\}

这不起作用。

我什至尝试将 Expander 的 HeaderStringFormat 属性设置为“{0} 的详细信息”,但这也没有格式化。

我能够让这个解决方法起作用:

<Expander>
<Expander.Header>
<TextBox Text="{Binding ElementName=dataGrid1, Path=SelectedItem.Name, StringFormat=Details of {0}}"></TextBox>
</Expander.Header>
</Expander>

有谁知道为什么 StringFormat 不适用于 Header 属性?

【问题讨论】:

    标签: wpf binding


    【解决方案1】:

    我也遇到了同样的问题,看了一些文章,尝试了各种ContentStringFormatHeaderStringFormat,我才决定做下一件事:

    <Expander Grid.Row="1" Padding="4">
                    <Expander.Header>
                    <TextBlock Text="{Binding ElementName=cbCategory, Path=SelectedItem.CategoryName, StringFormat='FORMATTED &quot;{0}&quot;'}"/>
                    </Expander.Header>
    

    【讨论】:

      【解决方案2】:

      根据http://codingcontext.wordpress.com/2008/11/17/headerformatstring-and-contentformatstring/,看起来HeaderStringFormat 属性并不是要与字符串格式绑定一起使用,而是要指定在绑定到实现IFormattable 的对象时要使用的格式。

      鉴于此,我也无法让字符串格式直接在绑定表达式中起作用,所以这可能只是一个错误。您应该尝试通知 Microsoft,也许他们会修复它。

      通过您的解决方法,我建议使用TextBlock 而不是TextBox,因为您可能不希望用户能够编辑Expander 标头中的文本。

      【讨论】:

      • 好的,这是信息。谢谢。另外,我正在使用 TextBlock...我想我只是在发帖时写错了。
      【解决方案3】:

      这可能与 Header 是 Object 类型属性而不是 String 有关。将 String 值转换为 UI 控件可能会干扰格式设置。与 TextBox 不同,Label 也能正常工作吗?这应该会给您与您最初尝试做的相同的效果。

      更新: 还可以尝试查看 HeaderStringFormat 属性。

      【讨论】:

      • 您确实有一点关于 Header 是一个对象而 TextBox.Text 是一个字符串。但是,我只是尝试使用标签,当我将 ContentFormatString 设置为我想要的内容时它就起作用了。 Label Content 属性也是一个对象,所以我还是不明白……Header 有点奇怪。
      猜你喜欢
      • 2017-09-04
      • 2012-05-06
      • 2013-02-17
      • 2017-10-09
      • 2017-08-03
      • 2014-05-02
      • 2011-09-11
      • 2016-02-11
      • 1970-01-01
      相关资源
      最近更新 更多