【发布时间】:2012-08-16 21:30:49
【问题描述】:
我有一个 xml 文件并创建了控件来显示其中的数据。大多数显示的节点没有子节点,但有少数节点有。对于那些我需要在 ItemsControl 中列出一些属性值的人。我能够创建一个 List 作为依赖属性以对其进行测试,并且字符串按预期显示。但是,现在我正在尝试绑定到 xml,但它似乎不起作用。
我已将依赖属性更改为 List 并将此依赖属性与值 SubOptions="{Binding Path=ChildNodes}" 绑定。在控件内部,ItemsControl 的 ItemsSource 也绑定到它自己的依赖属性。
为什么这不起作用?当我在绑定上放置一个测试转换器时,它给我的值是“XmlChildNodes”,我无法直接创建它,但每次我尝试将其隐式转换为 List 时,它都可以工作......
【问题讨论】:
-
好的我测试了在两者之间放置一个转换器并将 XmlNodeList 转换为 List
以便类型与依赖属性类型完全匹配。我验证了(在调试器中)该列表已成功创建,但在 ItemsControl 中我仍然一无所获... -
你是如何设置 DataContext 的?
-
好的,我相信我找到了。对于遇到此问题的其他任何人,发生了以下情况:使用 List
时,我得到的列表对于表单上的每个控件实例都是相同的(所以我不能有多个不同的控件实例列表)。我在这里搜索,发现依赖属性由于某种原因默认情况下对每个实例使用相同的列表(愚蠢),但解决方案是放置代码: SetValue(SubOptionsProperty, new List ()); -
在构造函数中,使其设置为新列表。这对字符串很有用,但是绑定或 xml 列表显然不能那样工作,似乎它是从绑定中设置值,然后构造函数中的这段代码将其转储并设置为一个新列表。有趣的是,它不使用相同的列表,我仍然可以在每个控件上使用不同的列表。在注释掉那条线之后,它现在似乎正在工作,但如果有人有更多信息,我很想知道......
-
对不起,多个cmets,它不会让我自己回答自己......
标签: wpf xml data-binding wpf-controls