我不确定我写的 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, UncommonField
System.Windows.FrameworkTemplate.LoadContent(DependencyObject 容器,List`1 受影响的Children)中的 1 个 templatedNonFeChildrenField)...