将元素添加到2个父元素

时间:2010-11-22 20:04:48

标签: c# silverlight windows-phone-7

我正在尝试从XML中检索数据,如果variable1 == variable2,它会将元素(listboxitem)添加到2个父元素(listbox - listbox1,listbox2)。我正在尝试使用以下代码:

if (variable1 == variable2)
{
    ListBox1.Items.Add(ListBoxItem);
    ListBox2.Items.Add(ListBoxItem);
}
else
{
    ListBox1.Items.Add(ListBoxItem);
}

我正在考虑绕过这个我可能能够复制ListBoxItem但我不太确定如何。

非常感谢任何帮助:D

谢谢!

2 个答案:

答案 0 :(得分:0)

wpf和silverlight中的任何控件只能在对象树中出现一次。所以你不能将一个ListBoxItem添加到几个ListBoxes。你可以用这种方式创建一个“副本”

ListBoxItem itemToClone = ...
ListBoxItem clonedItem = new ListBoxItem();
clonedItem.Content = itemToClone.Content;

因此,当itemToClone.Content本身不是控件而是字符串或数字时,您将拥有两个显示相同内容的ListBoxItem。

答案 1 :(得分:0)

您可以做的是构建两个ObservableCollections,其中包含对您查询过的xml数据中的项的引用。

不是将上述逻辑应用于ListBoxItem,而是将其应用于xml数据中的每个引用,并将数据添加到collection1 / collection2。

然后将collection1 / collection2绑定到listBox1.ItemsSource和listBox2.ItemsSource。

您有两个引用相同数据的列表框,而没有在树中复制ui控件的问题。