2010-03-03 5 views
1

선택할 도시 옵션과 함께 콤보 박스를 갖고 싶습니다. 옵션 중 하나는 빈 옵션 (도시 없음)입니다. itemsource는 "City"객체 목록에 바인딩됩니다. 목록에는 빈 옵션을 나타내는 null 값이 들어 있습니다. SelectedItem은 "City"유형의 속성에 바인딩됩니다. 콤보 박스에서 빈 옵션을 선택했을 때 상황을 제외한 모든 것이 작동합니다. SelectedItem에 바인딩 된 속성은 null 값으로 업데이트되지 않고 이전 선택 항목을 유지합니다. 어떻게 해결할 수 있을까요? null 값을 가진 Combobox - SelectedItem 바인딩

이 내 경험이 아닌 asnwer 그렉

답변

0

주셔서 감사합니다.

<TextBlock Text="{Binding ElementName=_cbx, Path=SelectedItem}" Margin="20" /> 
<ComboBox x:Name="_cbx" ItemsSource="{Binding Cities}" HorizontalAlignment="Left" SelectionChanged="OnNewCity" /> 

내가 목록과 코드 숨김에서 도시라는 속성을 만들고 문자열과 널 (null)입니다 값을 작성 : 나는 다음과 같은 XAML 있습니다. null을 선택한 경우 SelectedItem은 ComboBoxItem입니다.

OnNewCity에서 SelectedItem을 기반으로 한 다른 텍스트 상자를 채우고 동일한 문제가 발생합니다.

XAML 및 코드에 대한 자세한 정보를 제공해 주시겠습니까?

편집 후 작성자의 의견 :

XAML을 이용해 주셔서 감사합니다. 같은 문자열을 사용했지만 문자열 목록 대신 City 클래스를 사용 했으므로 동일한 동작을 얻습니다. SelectedCity의 중단 점은 setter가 호출되지 않음을 나타냅니다. City 개체가 null 인 경우 SelectedItem 속성은 ComboBoxItem 유형이므로 내 생각에 WPF는 Setter를 호출하기 위해 ComboBoxItem과 호환되는 형식의 SelectedCity 속성을 찾습니다. 이 경우에는 찾을 수 없습니다. 코드 숨김을 변경하여 객체 유형의 SelectedCity를 설정했습니다. 이 경우 setter는 null 도시에서도 호출됩니다!

SelectedCity의 유형을 변경하는 것이 좋은 방법인지 확신하지 못합니다. Type 객체를 남용하지 않아야합니다. 그러나 유형 검사 후에 SelectedCity를 올바르게 설정하는 바인딩 (및 유형 객체)에만 사용되는 다른 속성을 가질 수 있습니다.

또 다른 좋은 해결책은 바운드 목록에 널 도시를 두는 것이 이치에 맞는지 고려하는 것입니다. 이것을 없앨 수 있습니까, 아니면 null이 될 특별한 이름의 특별 도시가 있습니까?

+0
관련 문제