我不知道我写的DataGrid有什么问题。内容显示正确,但当我尝试添加一个OnSelectionChanged事件处理程序时,奇怪发生。请帮助我!将事件处理程序添加到WPF DataGrid抛出NullReferenceException
首先,下面没有任何问题:
<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中,一些“服务”标签具有许多“服务”子元素;一些“服务”标签根本没有任何孩子(想知道这是否是问题的原因)。
所以得到的用户界面是一些datagrids包含所有的行和列。某些数据网格仅显示标题。
现在我加入这个:
<DataGrid ItemsSource="{Binding XPath=services/service}" AutoGenerateColumns="False" Padding="2"
SelectionChanged="DataGrid_SelectionChanged">
并把在代码中的空方法:
private void DataGrid_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
}
现在我执行,并抛出一个异常
系统.NullReferenceException未处理 Message =未将对象引用设置为对象的实例。 Source = ForeFront支持监视器2 StackStack: 位于h:\ Personal \ Visual Studio 2010 \ Projects \ ForeFront支持中的FSM.MainWindow.System.Windows.Markup.IStyleConnector.Connect(Int32 connectionId,Object target)\ ForeFront支持Monitor 2 \ ForeFront支撑监视器2 \ MainWindow.xaml:线42 在System.Windows.FrameworkTemplate.LoadTemplateXaml(XamlReader templateReader,XamlObjectWriter currentWriter) 在System.Windows.FrameworkTemplate.LoadTemplateXaml(XamlObjectWriter objectWriter) 在System.Windows.FrameworkTemplate.LoadOptimizedTemplateContent(DependencyObject的容器,IComponentConnector组件连接器,IStyleConnector样式连接器,列表
1 affectedChildren, UncommonField
1 templatedNonFeChildrenField) 在System.Windows.FrameworkTemplate.LoadContent(DependencyObject contai列表'1受影响的孩子)...
非常感谢。但是,此事件处理程序不仅发生在DataGrid中。此DataGrid是ListBox元素的数据模板的一部分。当我在其他数据模板中添加事件处理程序时,也会出现同样的问题。 – Erencie
那么奇怪。 –