デバッグログとしてListBoxとObservable Collectionを使用する際の問題
-
06-07-2019 - |
質問
ビューモデルのオブザーバブルコレクションにバインドされたリストボックスがあります:
これは正常に機能しますが、1つ小さなヒッチを除きます...観測可能なコレクションに文字列が含まれていると仮定すると、同じ値のエントリがコレクションに追加されると全体が壊れますが、これを処理する最善の方法は何ですか?文字列の代わりにカスタム構造体を使用し、次にデータテンプレートを使用しますか?
編集:動作を説明するのを完全に忘れました...単一のエントリをクリックすると複数の値が選択され、同じテキストの他のすべての値が選択されます。
解決
この問題は、セレクター派生コントロールの性質が原因で発生します。 ObservableCollectionタイプからアイテムの選択を開始し、コレクションに重複する文字列が含まれている場合、セレクターは選択したアイテムに関して混乱します。新しい単純なクラス/構造を作成し、そこに文字列を配置する必要があります。
public class Info
{
public string Name { get; set; }
}
// ..
MyList = new ObservableCollection<Info>(new List<Info> { new Info { Name = "Hello World" }, new Info { Name = "Hello World" }, new Info { Name = "Hello World" } });
など。
<ListBox ItemsSource="{Binding MyList}" DisplayMemberPath="Name" />
所属していません StackOverflow