我正在尝试从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
谢谢!
答案 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控件的问题。