Установка Dynamically Текст заголовка Столбца сетки данных Silverlight

Указатель NULL - это тот, который указывает на никуда. Когда вы разыскиваете указатель p, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p является нулевым указателем, местоположение, хранящееся в p, является nowhere, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception.

В общем, это потому, что что-то не было правильно инициализировано.

29
задан Steve Wranovsky 6 July 2011 в 22:08
поделиться

3 ответа

Вы не можете Связать с Заголовком, потому что это не FrameworkElement. Можно сделать текст динамичным путем изменения Шаблона Заголовка как это:

xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"
xmlns:dataprimitives="clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls.Data"

<data:DataGridTemplateColumn>   
   <data:DataGridTemplateColumn.HeaderStyle>
       <Style TargetType="dataprimitives:DataGridColumnHeader">
          <Setter Property="Template">
             <Setter.Value>
                <ControlTemplate>                                        
                  <TextBlock Text="{Binding MeetingName, Source={StaticResource LocStrings}}" />                
               </ControlTemplate>
            </Setter.Value>
         </Setter>
      </Style>
   </data:DataGridTemplateColumn.HeaderStyle>
</data:DataGridTemplateColumn>
28
ответ дан Adam Kinney 28 November 2019 в 01:23
поделиться

У меня есть решение для привязка. Поскольку вы используете DataGridTemlateColumn, создайте для него подкласс и добавьте свойство типа Binding с именем экземпляра «HeaderBinding». Теперь вы можете выполнить привязку к этому свойству из XAML. Затем вы должны распространить привязку на TextBlock в DataTemplate вашего заголовка. Например, вы можете сделать это с помощью события OnLoaded этого TextBlock.

 HeaderTextBlock.SetBinding(TextBlock.TextProperty, HeaderBinding);

Вот и все. Если у вас больше столбцов и вы хотите использовать только один DataTemplate, это немного сложнее, но идея та же.

0
ответ дан 28 November 2019 в 01:23
поделиться

Почему бы просто не задать это в коде:

dg1.Columns[3].Header = SomeDynamicValue;
1
ответ дан 28 November 2019 в 01:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: