2010-12-29 7 views
3

두 개의 라디오 버튼이 있습니다.체크되지 않은 wpf 라디오 버튼

하나 (rb1)는 내 ViewModel의 속성에 바인딩됩니다. 속성이 true이면 응용 프로그램이로드 될 때 rb1이 선택됩니다. 속성이 거짓 인 경우 rb1이 선택 취소됩니다 (오른쪽).

마지막 경우 두 라디오 버튼이 선택 취소되어 있고 두 번째 라디오 버튼이 필요합니다. 속성이 거짓 일 때 (rb2)이 선택되어 있는지 확인합니다. 내가 어떻게 이럴 수 있니?

+0

두 개의 라디오 버튼이 있습니다. 이 둘은 같은 속성에 묶여 있습니까? 그리고 속성 값이 true 일 때 rb1을 검사하고 rb2를 선택 해제하고 false 일 때 rb1을 선택 해제하고 rb2를 검사해야합니까? – decyclone

+0

사용중인 .NET 버전은 무엇입니까? .NET 4에서 수정 된 데이터 바인딩 라디오 버튼에 문제가있었습니다. –

답변

0

발생하는 문제는 데이터 바인딩이 "손실"되어 있다는 것입니다. 나를 Matt Thalman을 인용 보자 :

클릭이 (예를 들어, 클릭 바는 푸와 체크 바의 선택을 취소 것) 제대로 버튼의 UI 상태를 변경합니다. 그러나 기본 값 IsFoo 및 IsBar 이이 시점 이후에 변경된 경우 버튼의 IsChecked 상태는 업데이트되지 않습니다. Snoop 도구를 사용하여 이 버튼 중 하나를 클릭 한 후 상태를 수동으로 설정했음을 발견했습니다. 종속성 속성이 수동으로 으로 설정되면 바인드가 손실됩니다. 이 은 바인딩 된 속성 을 업데이트 할 때 IsChecked 상태가 이 아닌 이유입니다.

public class DataBoundRadioButton : RadioButton 
{ 
    protected override void OnChecked(RoutedEventArgs e) 
    { 
      // Do nothing. This will prevent IsChecked from being manually set and overwriting the binding. 
    } 

    protected override void OnToggle() 
    { 
      // Do nothing. This will prevent IsChecked from being manually set and overwriting the binding. 
    } 
} 

은 자세한 내용은 this blog entry를 참조하십시오

간단한 해결책은 RadioButton 클래스를 서브 클래 싱하는 것입니다.

+0

AFAIK,이 버그는 .NET 4.0에서 수정되었습니다. 이제이 문제없이 RadioButton의 값을 바인딩 할 수 있어야합니다. –

관련 문제