でコンボボックスのデータのフィルタの「すべて」の値は、私はいくつかのデータとのコンボボックスを移入します。正常に動作します。私はdisplayPathとしてStatusPathとStatusPathをStatusPathとして持っています。は、ユーザーコントロールの構築時にはWPF
cmb.ItemsSource = dbEntities.Status
comoboxは、フィルタコントロールとして使用され、私は、空のフィルタとして使用される、「すべて」のためのいくつかの値を挿入する必要があります。
ObjectSet objectSet= dbEntities.Status;
Status stAll = new Status();
stAll.ID = -1;
stAll.Name = "All";
objectSet.AddObject(stAll);
cmb.ItemsSource = objectSet;
オブジェクトがobjectSetとに追加されていないいくつかの理由:
は、最初に私は面白い解決策を試してみました。それはいずれの例外もスローしませんでした。次に、手動で最初のインデックスに挿入しようとしましたが、エラーが発生しました: "ItemsSourceが使用されている間は操作は無効です。代わりにItemsControl.ItemsSourceで要素にアクセスして変更してください。
cmb.ItemsSource = entities.Status;
cmb.Items.Insert(0,"All");
どちらのdidntの仕事: 私のコードは次のように見えました。その行をコンボボックスに追加する最も簡単な方法は何ですか?エラーメッセージは私を混乱させました。私はそのような目的のためにItemsSourceをどのように使用するのか分かりません。
編集:私はので、ここで自分の質問に答えるために十分な担当者が作業コードである必要はありませんでした。 Craigに感謝します。
CompositeCollection comp = new CompositeCollection();
comp.Add(new CollectionContainer {Collection = dbEntities.Status});
Status stAll = new Status();
stAll.ID = -1;
stAll.Name = "All";
comp.add(stAll);
cmb.ItemsSource = comp;
//do whatever filter you want when the selected value is -1
あなたのリンクは、この解決策を考え出す助けになりました。 'CompositeCollection comp = new CompositeCollection(); 'comp.Add(新しいCollectionContainer {Collection = dbEntities.Status});' 'ステータスstAll =新しいステータス();' 'stAll.ID = -1;' 'stAll.Name = "すべて";' 'comp.add(stAll);' 'cmb.ItemsSource = comp;' コンポジットコレクションクラスを使用して、「すべて」を示す項目を手動で追加できます。 selectedItemプロパティはnullを返しませんが、selectedValueは-1であり、私の解決に必要で十分です。 (なぜ私はそれがObjectSetで動作しないのか分かりません) – Kta