2

まあ..それは機能しますが、ユーザーがリスト型のプロパティを作成した場合にのみ機能します。

これが完全なシナリオです。

テンプレート化されたコントロール(チェックボックス付きの複数選択コンボボックス)があります。ユーザーは、ItemsSource として List/ObservableCollection を指定します。コレクションは、任意のタイプ (Employee、Chair、Person など) にすることができます。ItemsSource の DependencyProperty はタイプ IList です。

ユーザーは、SelectedItems と呼ばれる DependencyProperty で双方向バインディングを使用して List を指定することもできます (そのため、一部のアイテムをチェック済みとして表示し、チェック済みのアイテムを取得できます)。

問題は SelectedItems dp にあります。テンプレート化されたコントロールでは IList 型です。ユーザーがバインドしている場合、双方向バインディングは機能しませんList<Person>。しかし、List<Person>を に変更すると機能しList<object>ます。

私は自分が正しくしていないことが何であるかを理解できません!

4

1 に答える 1

1

プロパティに TwoWay バインディングを配置しても意味がありませんSelectedItemsIListこれは、コントロールがソース オブジェクトのプロパティを実装するオブジェクトのインスタンスを作成して割り当てる必要があることを意味します。ただし、プロパティに割り当てるために作成する実際の型をコントロールが知る方法はありません。

代わりに、空のオブジェクトではあるが、ソース オブジェクトに事前に存在するリストへの OneWay バインドを使用する必要があります。ItemsSourceコントロール タスクは、プロパティで指定されたリストからそのリストのメンバーを追加または削除するだけです。

于 2011-01-11T13:32:28.903 に答える