Добавление обработчиков событий в WPF DataGrid создает исключение NullReferenceException - PullRequest
2 голосов
/ 07 сентября 2011

Я не уверен, что не так с DataGrid, который я написал.Содержимое отображается правильно, но когда я пытаюсь добавить обработчик события OnSelectionChanged, происходит что-то странное. Пожалуйста, помогите мне!

Во-первых, никаких проблем ниже:

<DataGrid ItemsSource="{Binding XPath=services/service}" AutoGenerateColumns="False" Padding="2">
      <DataGrid.Columns>
          <DataGridTextColumn Header=" Service Name " Binding="{Binding XPath=name}" Width="300"/>
          <DataGridTextColumn Header=" Status " Binding="{Binding XPath=status}" />
      </DataGrid.Columns>
</DataGrid>

Здесь services / serviceвзяты из моего внешнего файла XML.Я использовал ресурс XmlDataProvider в документе.В этом XML некоторые теги 'services' имеют много дочерних элементов 'service';некоторые теги 'services' вообще не имеют дочерних элементов (интересно, является ли это причиной проблемы).

Таким образом, в результате получается, что некоторые элементы данных содержат все строки и столбцы.некоторые из этих данных показывают только заголовки.

Теперь я добавляю следующее:

<DataGrid ItemsSource="{Binding XPath=services/service}" AutoGenerateColumns="False" Padding="2"
SelectionChanged="DataGrid_SelectionChanged">

И добавляю пустой код в код:

private void DataGrid_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
    {


    }

ТеперьЯ выполняю, и выдается исключение

System.NullReferenceException не обработано. Message = Ссылка на объект не установлена ​​для экземпляра объекта.Source = ForeFront Support Monitor 2 StackTrace: в FSM.MainWindow.System.Windows.Markup.IStyleConnector.Connect (Int32 connectionId, целевой объект) в h: \ Personal \ Visual Studio 2010 \ Проекты \ ForeFront Support Monitor 2 \ ForeFront Support Monitor 2\ MainWindow.xaml: строка 42 в System.Windows.FrameworkTemplate.LoadTemplateXaml (XamlReader templateReader, XamlObjectWriter currentWriter) в System.Windows.FrameworkTemplate.LoadTemplateXaml (XamlObjectWriter.styleConnector, список 1 affectedChildren, UncommonField 1 templatedNonFeChildrenField) в System.Windows.FrameworkTemplate.LoadContent (контейнер DependencyObject, List`1 disabledChildren) ...

1 Ответ

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

XML-привязка к WPF DataGrid может быть мучительной.

Попробуйте связать XML другим способом (например, объектной моделью) ... Как правильно связать xml с WPF DataGrid?

А затем проверьте, правильно ли запускается событие изменения выбора?

...