2

我不确定我写的 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>

这里的服务/服务来自我的外部 XML 文件。我在文档中使用了 XmlDataProvider 资源。在那个 XML 中,一些“服务”标签有许多“服务”子元素;一些“服务”标签根本没有任何孩子(想知道这是否是问题的原因)。

所以最终的 UI 是一些包含所有行和列的数据网格。一些数据网格只显示标题。

现在我添加这个:

<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=Object 引用未设置为对象的实例。Source=ForeFront Support Monitor 2 StackTrace:在 FSM.MainWindow.System.Windows.Markup.IStyleConnector.Connect(Int32 connectionId, Object target) 在 h:\Personal\Visual Studio 2010\Projects\ForeFront Support Monitor 2\ForeFront Support Monitor 2 \MainWindow.xaml: System.Windows.FrameworkTemplate.LoadTemplateXaml(XamlReader templateReader, XamlObjectWriter currentWriter) 的第 42 行 System.Windows.FrameworkTemplate.LoadTemplateXaml(XamlObjectWriter objectWriter) 在 System.Windows.FrameworkTemplate.LoadOptimizedTemplateContent(DependencyObject 容器, IComponentConnector componentConnector, IStyleConnector样式连接器,列表1 affectedChildren, UncommonFieldSystem.Windows.FrameworkTemplate.LoadContent(DependencyObject 容器,List`1 受影响的Children)中的 1 个 templatedNonFeChildrenField)...

4

1 回答 1

0

XML 绑定到 WPF DataGrid 可能很麻烦。

尝试以不同的方式绑定 XML(如对象模型)...如何将 xml 正确绑定到 WPF DataGrid?

然后检查选择更改事件是否正确触发?

于 2011-09-08T07:10:52.137 回答