我对WPF中的DataGrid控件有点新意。我已经在UserControl中构建了一个DataGrid,并将该UserControl包装在一个Window中。 DataGrid:
<DataGrid x:Name="mDataGrid" RenderTransformOrigin="0.167,-0.077" Margin="-2.572,0,5.428,0" IsReadOnly="True" AlternatingRowBackground="#1EA2A2E2" AutoGenerateColumns="False" Height="389" VerticalAlignment="Top" Grid.ColumnSpan="5">
<DataGrid.Columns>
<DataGridTextColumn Header="Term" Binding="{Binding Term}"/>
<DataGridTextColumn Header="Alternate" Binding="{Binding Alternate}"/>
<DataGridTextColumn Header="Document" Binding="{Binding Document}"/>
<DataGridTextColumn Header="POS" Binding="{Binding POS}"/>
<DataGridTextColumn Header="Meaning" Binding="{Binding Meaning}"/>
</DataGrid.Columns>
</DataGrid>
我用来准备和显示控件的C#代码:
ObservableCollection<LexiconEntry> oc = new ObservableCollection<LexiconEntry>();
foreach (KeyValuePair<string,LexiconEntry> kvp in lex.Entries)
{
LexiconEntry le=kvp.Value;
oc.Add(le);
}
mDataGrid.ItemsSource = oc;
现在,如果我在不调用上述例程的情况下运行应用程序 - 意味着DataGrid为空 - 一切都正常关闭。另一方面,如果我调用上面的例程将ItemSource链接到DataGrid,则在关闭所有窗口后进程仍然运行。我需要使用任务管理器或从VS内部移位+ F5来杀死它。窗口关闭,我已经通过Window_Closing和Window_Closed事件处理程序进行了跟踪来验证这一点,但是进程不会自行关闭。我不太确定如何在调试器中查看是什么让它保持活着,但唯一导致应用程序是否正常退出的区别在于填充DataGrid。
我该如何解决这个问题?我已经尝试将DataGrid的ItemSource从其父窗口的OnClosing事件中设置为null,但这没有帮助。
谢谢!
答案 0 :(得分:0)
麦克, 字典中的LexiconEntry对象来自哪里?你在lex.Entries中有多少对?
我的建议是尝试创建一个类似于LexiconEntry的新测试类,并添加与lex.Entries中一样多的测试类。如果事情运作良好,问题就出在字典中的LexiconEntry对象上。