2010-04-15 1 views
0

설정 :Mainaining 라디오 선택

내가 콤보 박스를 가지고가,이 itemsource 사용자 정의 클래스의 ObservableCollection에 < T>에 바인딩 된, 하나 개의 속성은> 목록 < myenum입니다.

콤보 상자의 선택한 항목 목록 < myenum> 속성에 데이터 바인딩되는 itemscontrol이 있습니다.

itemscontrol 데이터 템플릿은 라디오 버튼의 목록을 생성하며 각 라디오 버튼은 목록의 개별 열거 형 값을 나타냅니다.

소망 :

나는 ItemsControl에 소스가 업데이트되는 콤보 상자의 값을 변경. 내가 원하는 것은 새 itemscontrol 소스의 라디오 버튼이 이전 목록 (업데이트되기 전에)에서 선택된 라디오 부턴과 같은지 확인하는 것입니다.

현재 아이디어 :

Asign과 비교 될 수있는 창 클래스의 myenum 속성을 유지하는 라디오 버튼에 체크 이벤트. 라디오 박스의 IsChecked 속성을 변환기에 바인딩하고 myenum 속성과 비교합니다. 이를 달성하기 위해 창 클래스를 IValueConverter에서 확장했습니다. 이렇게하면 변환기 함수가 myenum 속성에 액세스 할 수 있습니다.

문제 :

나는 컨버터로 창을 사용하는 바인딩의 IsChecked을 얻을하는 방법을 모르겠어요. 나는 바인딩의 변환 부분에 상대적으로 소스를 사용하여 시도,하지만 IsChecked="{Binding Converter={RelativeSource={RelativeSource Self}}}"

선호하는 답변이 작동하지 않습니다 : 그것은이 방법으로 가능하다면 바인딩 구문을 수정에

지원합니다.

내가 원하는 것을 달성하는보다 적절한 방법에 대한 아이디어.

답변

0

또한 xaml에서 값 변환기로 창을 사용하는 방법을 알지 못합니다. 대신 enum 형식에 대한 공용 속성을 사용하여 독립형 값 변환기 클래스를 만듭니다. 그런 다음 윈도우의 생성자에서 값 변환기의 인스턴스에 대한 참조를 가져 와서 비공개 멤버에 저장합니다.

는 XAML : 뒤에

<local:MyValueConverter x:Key="ConvertSomething" /> 

코드 :

private MyValueConverter _myValueConverter; 

public Window1() 
{ 
    InitializeComponent(); 

    _myValueConverter = FindResource("ConvertSomething") as MyValueConverter; 
} 

private void RadioButton_Checked(object sender, RoutedEventArgs e) 
{ 
    // You can access _myValueConverter here and set its public enum property.  
} 
+0

이것은 내가 결국했다 경로입니다. Mode = OneWay 바인딩을 변경해야했습니다. 그러나 이제는 모두 작동합니다. – Psytronic