【发布时间】:2012-08-31 10:47:54
【问题描述】:
我有一个包含多个子元素的 XML 文件。每个子元素都包含一系列元素,但 XML 模式没有记录,所以我不可能解释每个可能的元素名称。我的目标是为每个子元素提供一个编辑器视图。例如:
XML 文件
<root>
<element>
<subelement1>value</subelement>
<randomName88787>value</randomName>
<somethingTotallyFunky>value</somethingTotallyFunky>
<iHaveNoIdeaWhatThisWillBe>value</iHaveNoIdeaWhatThisWillBe>
</element>
</root>
我希望使用 WPF Toolkit 的 PropertyGrid 控件(或类似的控件)来显示<element> 的所有子元素的列表,但该控件旨在绑定到 CLR 对象。当然我不能用属性定义一个类,因为我不知道这些属性是什么。我尝试使用以下代码绑定到 expando 对象:
var expando = new ExpandoObject();
var dict = (IDictionary<string, object>)expando;
foreach (var prop in unit.Elements())
{
if (dict.ContainsKey(prop.Name.LocalName) == false)
{
dict.Add(prop.Name.LocalName, (string)prop.Value);
}
}
Properties.SelectedObject = expando;
但没有显示任何属性。它似乎不能很好地处理 ExpandoObject。有没有更好的方法来处理我正在尝试做的事情?有更好的控制吗?
【问题讨论】:
标签: wpf dynamicobject