2016-06-14 2 views
-1

콤보 박스가 선택되었거나 선택되지 않은 경우 텍스트 상자, 레이블, 텍스트 블록과 같은 컨트롤을 사용하거나 사용하지 않도록 설정하는 방법은 무엇입니까? 예 : 선택한 인덱스가 0보다 큰 경우 다른 컨트롤을 사용 가능하게 설정하십시오. 콤보 상자 선택 기능을 사용하여 컨트롤의 IsEnabled 속성을 바인드하는 방법은 무엇입니까?Xaml의 ComboBox 선택에서 컨트롤 사용/사용 안 함

+0

당신은 IsEnabled를 바인딩합니다. – Paparazzi

+0

@Paparazzi 질문을 업데이트했습니다. – bill

+0

ComboboxSelection의 'PropertyChanged' 이벤트에서, ** VM **에서 활성화/비활성화하려는 컨트롤의'IsEnabled' 속성에 바인딩 된 다른 속성을 업데이트해야합니다. – Kidiskidvogingogin

답변

2

IsEnabled을 ComboBox 속성의 SelectedIndex에 바인딩하고 IValueConverter을 사용하여 부울로 변환 할 수 있습니다. 예를 들어, 귀하의 XAML에 (도시 Button 가능) :

<ComboBox x:Name="cmbBox" ItemsSource="{Binding Source={StaticResource DataList}}"/> 
<Button Grid.Column="1" IsEnabled="{Binding ElementName=cmbBox, Path=SelectedIndex, Converter={StaticResource IndexToBoolConverter}}"/> 

그런 다음 당신은뿐만 아니라 컨버터가 필요 같은 :

public class IndexToBoolConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     if ((int)value > 0) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 

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

또한 리소스로 변환을 선언해야합니다, 당신의 창문에서.

<local:IndexToBoolConverter x:Key="IndexToBoolConverter"/> 
1

아마도 이런 식으로 할 것입니다.

<Grid> 
    <Grid.Resources> 
     <Style TargetType="{x:Type Button}"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Path=SelectedItem, 
               ElementName=TheCombo}" 
               Value="{x:Null}"> 
        <Setter Property="IsEnabled" Value="False" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Grid.Resources> 

    <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center"> 

     <ComboBox x:Name="TheCombo" Width="100"> 
      <ComboBoxItem>Blah</ComboBoxItem> 
      <ComboBoxItem>Blah</ComboBoxItem> 
      <ComboBoxItem>Blah</ComboBoxItem> 
     </ComboBox> 

     <Button Content="Click Me" Margin="0,10"/> 

    </StackPanel> 

</Grid> 

호프가 도움이 되었으면 좋겠다!

관련 문제