我不确定我写过的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中,一些'services'标签有许多'service'子元素;一些“服务”标签根本没有任何孩子(想知道这是否是问题的原因)。
因此,生成的UI是一些datagrids包含所有行和列。一些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)
{
}
现在我执行,抛出异常
System.NullReferenceException未处理 Message =对象引用未设置为对象的实例。 Source = ForeFront支持监视器2 堆栈跟踪: 位于h:\ Personal \ Visual Studio 2010 \ Projects \ ForeFront支持监视器2 \ ForeFront支持监视器2 \ MainWindow.xaml:第42行中的FSM.MainWindow.System.Windows.Markup.IStyleConnector.Connect(Int32 connectionId,Object target) 在System.Windows.FrameworkTemplate.LoadTemplateXaml(XamlReader templateReader,XamlObjectWriter currentWriter) 在System.Windows.FrameworkTemplate.LoadTemplateXaml(XamlObjectWriter objectWriter) 在System.Windows.FrameworkTemplate.LoadOptimizedTemplateContent(DependencyObject容器,IComponentConnector componentConnector,IStyleConnector styleConnector,List
1 affectedChildren, UncommonField
1 templatedNonFeChildrenField) 在System.Windows.FrameworkTemplate.LoadContent(DependencyObject容器,List`1 affectedChildren)...
答案 0 :(得分:0)
与WPF DataGrid的XML绑定可能很痛苦。
尝试以不同的方式绑定XML(如对象模型)...... How to bind xml to the WPF DataGrid correctly?
然后检查选择更改事件是否正确触发?