2010-11-22 18 views
0

XMLからデータを取得しようとしていて、variable1 == variable2の場合は、2つの親要素(listbox-listbox1、listbox2)に要素(listboxitem)を追加します。私はListBoxItemを複製することができるかもしれ私はこれを回避するために考えていた2つの親要素に要素を追加する

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

が、どのように、非常にわからないイム:私は、次のコードを使用しようとしています。

すべてのヘルプは非常に高く評価:D

感謝を!

答えて

0

あなたができることは、照会したxmlデータのアイテムへの参照を含む2つのObservableCollectionを構築することです。

上記のロジックをListBoxItemに適用する代わりに、xmlデータの各参照に適用し、コレクション1 /コレクション2にデータを追加します。

次に、collection1/collection2をlistBox1.ItemsSourceとlistBox2.ItemsSourceにバインドします。

同じデータを参照する2つのリストボックスがあり、ツリー内のUIコントロールが重複しないようにすることができます。

+0

返信いただきありがとうございます。私はデータバインディングが行けるようになったことを認識しましたが、C#を学んでいるところでどこから始めたらいいのか分かりません。私は隔離されたストレージとのバインディングの使用に関するチュートリアルを探していましたが、良いものを見つけることができませんでした。あなたはそれを知っていますか?おかげで – Jamie

+0

他の質問のリンクは、あなたのxapのファイルからバインディングデータを示しています。独立したストレージからロードするデータにこのアプローチを簡単に適用できます。 –

0

wpfとsilverlightのコントロールは、オブジェクトツリーで1回しか表示できません。したがって、複数のListBoxに1つのListBoxItemを追加することはできません。あなたはとてもitemToClone.Content自体はコントロールが、文字列や数値を使用すると、同じ内容を示す2 ListBoxItemsがあるでしょうでない場合、「コピー」このよう

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

を作成することができます。

+0

ありがとう、返信ありがとうございますが、私はListBoxItem内でStackPanelを使用しているので、まだ "Element is already other element"のエラーを受けています。 – Jamie

+0

@Jamie:そうだよ。では、このListBoxItemが最初にどのように作成されたのですか?あなたは同じ方法で2番目のものを作ることができませんか? –

+0

ListBoxItem lbi =新しいListBoxItem(); stack.Children.Add(textblock); lbi .Content = stack; – Jamie

関連する問題