【发布时间】:2017-10-15 22:58:54
【问题描述】:
在我的 WPF 应用程序中应该可以:
读取 XML 数据并将它们呈现在用户界面中。
为此,我在 MainPage.xaml 文件中定义了一个 dataGrid:
<DataGrid Name="dataGrid" AutoGenerateColumns="True" />
在代码隐藏文件中,我创建了一个方法,用 xml 文件中的数据填充这个数据网格:
private void mnuOpen_Click(object sender, RoutedEventArgs e)
{
Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();
Nullable<bool> result = dlg.ShowDialog();
if (result == true)
{
string path = System.IO.Path.GetFullPath(dlg.FileName);
var xml = XDocument.Load(path).Root;
dataGrid.DataContext = xml;
}
}
这可以正常编译,也可以正常运行(不会引发异常)——但是,xml 数据不会显示在 UI 中。
在使用调试器的时候,有几个奇怪的地方:
监视窗口中的变量“path”始终如下所示:path error CS0103: The name 'path' does not exist in the current context
出于某种原因,一行
var xml = XDocument.Load(path).Root;
似乎被“跳过”了。也就是调试器直接从
string path = System.IO.Path.GetFullPath(dlg.FileName);
到
dataGrid.DataContext = xml;
我真的不明白这里发生了什么。
【问题讨论】:
-
“跳过”没有意义。导致尝试通过设置
DataContext来填充 DataGrid 的决策过程是什么? -
我使用了以下链接下的建议:stackoverflow.com/questions/5238534/c-wpf-datagrid-and-xml-file ... 请参阅已批准答案中的“代码隐藏”部分
-
你能在你的代码中识别出
XmlDataProvider的实例吗? -
我以为您使用 XmlDataProvider 或“代码隐藏”方法...我没有 XMLDataProvider 的实例
-
您使用了代码隐藏方法,所以幸运的是,您避免了尝试使
XmlDataProvider工作的恐惧。
标签: c# xml visual-studio xaml datagrid