2009-07-16 6 views
2

ObservableCollection 항목에 데이터 바인딩되는 콤보 상자가 있습니다. 나는 "SelectedValue"에 바인딩 된 속성 값을 null로 설정하는 (None) 기본 선택 항목을 갖고 싶습니다.WPF에서 데이터 바인딩 된 ItemsControl에 항목 추가

Style/DataTemplate/TemplateSelector의 일부 조합으로이 작업을 수행하는 방법이 있어야한다고 생각합니다. MVVM을 염두에두고 이것을 설계하려고 노력하고 있으므로 코드 숨김을 사용하지 않고 가능한 한 재사용이 가능한 무언가를 원합니다. 또한 ObservableCollection (컬렉션을 업데이트하여 컨트롤을 리바 인 토록 함)의 이점을 그대로 유지하고자합니다.

보너스 파트 B : 또한 ItemsControl의 맨 아래에 추가 시각적 요소를 추가 할 수 있기를 바랍니다. 컬렉션의 마지막 항목에서 트리거하는 방법을 알고 있다면 DataTemplate을 쉽게 변경할 수 있다고 생각했습니다. 다른 옵션을 여기에서 즐겁게하고 싶어합니다.

답변

1

가장 간단한 방법은 기본 콜렉션에 "특별한"값을 삽입하고 그것이 선택되면 "(없음)"텍스트를 표시하는 것입니다. 분명히이 값을 고려하여 변환기를 통해 바인딩을 실행하고 선택 될 때 null을 리턴해야합니다. (내 this question ComboBox의 기본 컬렉션에 실제 null 값을 추가하려고했기 때문에 생긴 내 결과를 참조하십시오.)

사실, CompositeCollection 클래스로 원하는 작업을 수행 할 수 있습니다. 별도의 컬렉션 (하나의 아이템 - Null 아이템)을 만들고 ComboBox를 CompositeCollection을 통해 ComboBox와 원래 컬렉션에 바인딩 할 수 있습니다.

+0

나는 이것을 시도했다. DataContext (예 :

관련 문제