Well..its 사용자가 List 유형의 속성을 만들 때만 작동합니다.Silverlight : DependencyProperty (IList)의 양방향 바인딩이 작동하지 않습니다.
다음은 전체 시나리오입니다.
템플릿 컨트롤 (선택 상자가있는 다중 선택 콤보 상자) 사용자가 해당 ItemsSource로 List/ObservableCollection을 제공합니다. 컬렉션은 모든 유형 (직원, 의장, 사람 등)이 될 수 있습니다. ItemsSource의 DependencyProperty는 유형 IList입니다.
사용자는 (그가 검사 일부 항목을 표시하고 확인됩니다 항목을 다시 얻을 수 있도록)
지금 문제가 selectedItems를 함께이 두 방법은 DependencyProperty를 호출 selectedItems를 바인딩과 목록을 제공 할 수 있습니다 dp. 템플릿 화 된 컨트롤에서 IList 형식입니다. 사용자가 바인딩 한 경우 양방향 바인딩이 작동하지 않습니다 (예 : List<Person>
). List<Person>
이 List<object>
으로 변경되면 작동합니다.
내가 옳지 않은 것은 무엇인지 알아낼 수 없다!
그러나 OneWay Binding은 컨트롤의 목록에 멤버를 추가/제거 할 때 소스를 업데이트합니까? – Jags
@James : 예. SelectedItem에 할당 된 구현 IList는 소스가 보유한 기존 목록입니다. 실제로 SelectedItem에 바인딩하는 소스의 속성은 ReadOnly 일 수 있습니다. 소스는 목록의 인스턴스를 내부적으로 만들고 해당 읽기 전용 속성에 노출합니다. 컨트롤에 의해 만들어진 해당 목록의 변경 사항은 원본이 보유한 목록에 직접 반영됩니다. – AnthonyWJones
예 .. ItemsSource 속성에서 SelectedItems에 직접 멤버를 추가하는 것은 멋지게 작동합니다. 변경 내용은 소스에 반영됩니다. :) 그러나 내가 가진 의심은 "소스가 목록의 인스턴스를 내부적으로 만듭니다"(사용자 소스의 바인드 된 목록이 null이 아니어야 함을 확인해야합니다. 그렇다면 ListBox의 SelectedItems 속성 (multiSelection 모드 용)은 어떻게 작동합니까? 나는 사용자가 속성의 인스턴스를 생성해야한다고 생각하지 않습니까? [Plz 내가 잘못했거나 이해가 안되면 알려주세요.] – Jags