如何从Silverlight DataGrid的Header属性进行数据绑定

如何从Silverlight DataGrid的Header属性进行数据绑定,silverlight,datagrid,silverlight-4.0,Silverlight,Datagrid,Silverlight 4.0,如何将DataGridTemplateColumn或DataGridTextColumn的Header属性绑定到Silverlight 4的DataGrid中ViewModel的某些文本属性 不起作用的理想解决方案: <sdk:DataGrid AutoGenerateColumns="False" ...> <sdk:DataGrid.Columns> <sdk:DataGridTemplateColumn Header="{Binding MyVie

如何将DataGridTemplateColumn或DataGridTextColumn的Header属性绑定到Silverlight 4的DataGrid中ViewModel的某些文本属性

不起作用的理想解决方案:

<sdk:DataGrid AutoGenerateColumns="False" ...>
  <sdk:DataGrid.Columns>
    <sdk:DataGridTemplateColumn Header="{Binding MyViewModelProperty}" >
我听说Header属性不是FrameworkElement,因此不能直接使用数据绑定。在SL 4中Header属性仍然没有FrameworkElement吗?至少Blend 4不希望对Header属性进行数据绑定

现在有没有一个好的解决方案,不需要在代码隐藏文件中进行肮脏的黑客攻击?可能使用从DataGridTemplateColumn派生的类?这怎么可能呢


我更喜欢完全在XAML中工作的解决方案。到目前为止,我在stackoverflow和web上的发现并没有解决我的问题,例如,对于SL4来说,这仍然是正确的-绑定必须是到框架元素。
您可以选择使用AutoGenerateColumns=True和System.ComponentModel.DataAnnotations命名空间(如DisplayAttribute)中的属性来定义列名。

这对于SL4仍然适用-绑定必须是到框架元素。
您可以选择使用AutoGenerateColumns=True和System.ComponentModel.DataAnnotations命名空间中的属性(如DisplayAttribute)来定义列名。

您可以像这样覆盖HeaderStyle。这将在标题中显示绑定文本

<sdk:DataGridTextColumn Binding="{Binding SomeValue}" >
   <sdk:DataGridTextColumn.HeaderStyle>
      <Style TargetType="sdk:DataGridColumnHeader">
         <Setter Property="ContentTemplate">
            <Setter.Value>
               <DataTemplate>
                  <TextBlock Text="{Binding MyViewModelProperty}}" />
               </DataTemplate>
            </Setter.Value>
         </Setter>
      </Style>
    </sdk:DataGridTextColumn.HeaderStyle>                            
</sdk:DataGridTextColumn>

您可以像这样覆盖HeaderStyle。这将在标题中显示绑定文本

<sdk:DataGridTextColumn Binding="{Binding SomeValue}" >
   <sdk:DataGridTextColumn.HeaderStyle>
      <Style TargetType="sdk:DataGridColumnHeader">
         <Setter Property="ContentTemplate">
            <Setter.Value>
               <DataTemplate>
                  <TextBlock Text="{Binding MyViewModelProperty}}" />
               </DataTemplate>
            </Setter.Value>
         </Setter>
      </Style>
    </sdk:DataGridTextColumn.HeaderStyle>                            
</sdk:DataGridTextColumn>

我用Telerik DataGrid进行了尝试,它显然是MS toolkit DataGrid,并且Header属性确实是不可绑定的。我会对你从+1中得到的答案感兴趣。我用Telerik DataGrid进行了尝试,它显然是后台的MS toolkit DataGrid,Header属性确实不可绑定。我会对你得到的答案感兴趣。