0

我有一个 xml 文件并创建了控件来显示其中的数据。大多数显示的节点没有子节点,但有少数节点有。对于那些我需要在 ItemsControl 中列出一些属性值的人。我能够创建一个 List 作为依赖属性以对其进行测试,并且字符串按预期显示。但是,现在我正在尝试绑定到 xml,但它似乎不起作用。

我已将依赖属性更改为 List 并将此依赖属性与值 SubOptions="{Binding Path=ChildNodes}" 绑定。在控件内部,ItemsControl 的 ItemsSource 也绑定到它自己的依赖属性。

为什么这不起作用?当我在绑定上放置一个测试转换器时,它给我的值是“XmlChildNodes”,我无法直接创建它,但每次我尝试将其隐式转换为 List 时,它都可以工作......

4

1 回答 1

0

好的,我相信我找到了。对于遇到此问题的其他任何人,这是发生的事情:

使用 List 时,我得到了表单上每个控件实例的列表都相同的位置(所以我不能有多个具有不同列表的控件实例)。我在这里搜索,发现依赖属性由于某种原因默认为每个实例使用相同的列表(愚蠢),但解决方案是放置代码:

SetValue(SubOptionsProperty, new List<string>());

在构造函数中,使其设置为新列表。这对字符串很有用,但是绑定或 xml 列表显然不能那样工作,似乎它是从绑定中设置值,然后构造函数中的这段代码正在转储它并设置到一个新列表。有趣的是,它不使用相同的列表,我仍然可以在每个控件上使用不同的列表。

在注释掉那条线之后,它现在似乎正在工作,但如果有人有更多信息,我很想知道它为什么工作......

于 2012-08-17T15:56:32.180 回答