我不知道我寫的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
那麼奇怪。 –