在Silverlight中绑定DataGridHeader ContentTemplate

时间:2010-12-01 21:36:57

标签: silverlight mvvm datagrid silverlight-4.0

我知道通过Dynamically setting the Header text of a Silverlight DataGrid Column将文本绑定到DataGrid标头是不可能的,但我在线跟踪一些代码示例以替换TextBlock作为标头。但是,无论我做什么,我必然会出现的文字都不会出现。

我的观点中的XML:

<dg:DataGridTextColumn Binding="{Binding Path=UnitKey}" IsReadOnly="True">
 <dg:DataGridTextColumn.HeaderStyle>
  <Style TargetType="dataprimitives:DataGridColumnHeader">
   <Setter Property="ContentTemplate">
    <Setter.Value>
    <DataTemplate>
      <TextBlock Text="{Binding Path=KeyListName}"/>
    </DataTemplate>
    </Setter.Value>
   </Setter>
  </Style>
 </dg:DataGridTextColumn.HeaderStyle>
</dg:DataGridTextColumn>

我的视图模型中的C#:

    public string KeyListName
    {
        get { return keyListName; }
        set
        {
            keyListName = value;
            raisePropertyChanged("KeyListName");
        }
    }

我无法弄清楚我忽略了什么..提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

在您的TextBlock中放置一个datacontext

 <TextBlock DataContext="" Text="{Binding Path=KeyListName}"/>

如果他们与您的UnitKey具有相同的datacontext

<dg:DataGridTextColumn x:Name="dgColumnUnit" Binding="{Binding Path=UnitKey}" IsReadOnly="True">

                                          

之所以没有绑定,是因为作为你的DataGridTextColumn的父已经绑定了,尝试调试它并查看你的输出窗口它会提示 KeyListName不能发现....