Как связать данные из свойства Header Silverlight DataGrid - PullRequest
2 голосов
/ 20 сентября 2010

Как свойство «Заголовок» DataGridTemplateColumn (или DataGridTextColumn) может быть связано с некоторым текстовым свойством ViewModel в DataGrid Silverlight 4?

«Идеальное» решение (которое не работает):

<sdk:DataGrid AutoGenerateColumns="False" ...>
  <sdk:DataGrid.Columns>
    <sdk:DataGridTemplateColumn Header="{Binding MyViewModelProperty}" >

Я слышал, что свойство Header не является FrameworkElement и поэтому не может напрямую использовать DataBinding.Свойство Header все еще не FrameworkElement в SL 4?По крайней мере Blend 4 не хочет DataBind для свойства Header.

Теперь существует ли «хороший» обходной путь, который не требует грязных хаков в коде файла?Может быть, используя класс, производный от DataGridTemplateColumn?Как это можно сделать?

Я бы предпочел решение, которое полностью работает в XAML.То, что я обнаружил в stackoverflow (и в Интернете), до сих пор не решило мой вопрос (например, Связывание с заголовком столбца DataGrid в коде ).

Ответы [ 2 ]

0 голосов
/ 28 сентября 2011

Вы можете переопределить 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>
0 голосов
/ 20 сентября 2010

Это все еще верно для SL4 - привязки должны быть к элементам Framework. Один из имеющихся вариантов - использовать AutoGenerateColumns = "True" и атрибуты в пространстве имен System.ComponentModel.DataAnnotations, например DisplayAttribute, для определения имен столбцов.

...