2013-03-27 2 views
0

예제에서 this을 시도했는데 정상적으로 작동하는 것 같습니다. 그렇다면 우리가 작업하고있는 주 프로젝트에 적용했는데 실패했습니다.라디오 버튼을 선택하면 콤보 상자가 비활성화되지 않습니다.

<ComboBox Name="Combo" IsSynchronizedWithCurrentItem="True" 
ItemsSource="{Binding Tables}" SelectedItem="{Binding TableName, Mode=TwoWay}" 
Style="{StaticResource ComboBoxStyle}" Grid.Row="1" Height="30" Width="180" 
SelectionChanged="Combo_SelectionChanged" IsEnabled="{Binding IsChecked, ElementName=rdBtnList}" Margin="6,20,6,0" Grid.RowSpan="2" /> 

하고 제어하는 ​​라디오 버튼 :

<RadioButton Content="By List" Height="16" IsChecked="{Binding Path=ListSelect, Mode=TwoWay}" 
HorizontalAlignment="Right" Margin="0,6,24,0" Name="rdBtnList" VerticalAlignment="Top" 
Background="DodgerBlue" FontSize="13" FontWeight="Bold" Grid.RowSpan="2" /> 

사람이합니다 (의 IsEnabled 상황에 대해) 아무것도 볼 수 있습니까 잘못된 것 같습니다 여기에 관련 코드의 자르는거야?

+0

을 사용하면 출력 창에있는 바인딩 오류를받을 수 있나요? – Josh

+0

@Josh No. 오류가 없습니다. 이것은 실망 스럽습니다 – Nallware

+0

'RadioButton'이 선택되거나 선택 해제 된 경우'ComboBox'가 비활성화되도록 하시겠습니까? 코드별로 radioButton이 체크 된 경우 활성화됩니다. –

답변

1

라디오 버튼을 선택하면 코드가 작성되는 방식에 따라 콤보 상자가 활성화됩니다. 라디오 버튼을 선택하면 콤보 상자가 비활성화되어야합니다. 반대쪽에 부울 값을 만들려면 변환기가 필요합니다.

public class OppositeBoolConverter : IValueConverter { 

     public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { 
      return !System.Convert.ToBoolean(value); 
     } 

     public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { 
      return value; 
     } 
    } 
} 

지금, 네임 스페이스 참조를 추가하고 콤보 상자 바인딩에 컨버터를 추가

xmlns:local="clr-namespace:NAMESPACE" 

<local:OppositeBoolConverter x:Key="cnt" /> 

IsEnabled="{Binding IsChecked, Converter={StaticResource cnt}, ElementName=rdBtnList}" 
+0

아직도 이해가 안되는 부분은 (사용 가능/사용 불가능을 제외하고) 내 예제를 사용하여 변경하는 이유는 무엇입니까?하지만 프로젝트에서는 변경되지 않습니다. Enabled 또는 Disabled는 내가 묻는 질문이 아닙니다. 그 둘 사이에 변화에 관하여 더 많은 것. – Nallware

관련 문제