【问题标题】:Why does this binding display a class name?为什么这个绑定显示一个类名?
【发布时间】:2010-09-02 08:31:17
【问题描述】:

什么可能导致 Silverlight 4 DataGridTextColumn.Header 的值显示为 System.Windows.Data.Binding 而不是解析的绑定值?似乎 ToString 正在某处显示类名而不是类的格式化值。

绑定看起来像这样

Header="{Binding Path=Dummy,Source={StaticResource languagingSource},Converter={StaticResource languagingConverter},ConverterParameter=vehicleDescription}"

问题不在于绑定中的任何地方,因为具有不同 ConverterParameter 值的相同绑定在同一 XAML 页面中适用于 Button.Content 和 TextBlock.Text 属性。

即使在本地数据上下文中创建这样一个简单的字符串属性也会产生相同的结果。

public string DataGridHeaderDescription { get { return "Description"; } }

Header="{Binding DataGridHeaderDescription}"

我什至尝试过添加字符串格式

Header="{Binding DataGridHeaderDescription,StringFormat=\{0\}}"

但这也没有效果。

【问题讨论】:

    标签: silverlight data-binding xaml silverlight-4.0


    【解决方案1】:

    现在甚至可以在不是从FrameworkElement 派生的元素上使用绑定,但是被绑定元素的属性必须定义为DependencyProperty,而Header 不是。

    由于 Header 只是要放置在标题中的任何内容的位置标记,您可以简单地这样做:-

    <DataGridTextColumn.Header>
      <TextBlock Text="{Binding Path=Dummy,Source={StaticResource languagingSource},Converter={StaticResource languagingConverter},ConverterParameter=vehicleDescription}" />
    </DataGridTextColumn.Header>
    

    【讨论】:

    • 谢谢你;比我在回答中提到的线程中提供的更简单的解决方案。
    【解决方案2】:

    经过进一步搜索,我找到了回答问题并提供了一些建议解决方案的帖子。

    Dynamically setting the Header text of a Silverlight DataGrid Column

    【讨论】:

      猜你喜欢
      • 2012-05-13
      • 2023-03-14
      • 2013-07-12
      • 1970-01-01
      • 1970-01-01
      • 2012-01-18
      • 2013-07-25
      • 2013-03-28
      • 1970-01-01
      相关资源
      最近更新 更多