2013-04-29 2 views
0

TextBox.Text 값을 기반으로 CheckBox를 확인하는 방법은 무엇입니까?WPF에서 TextBox.Text 값을 기반으로 CheckBox를 확인하려면 어떻게합니까?

WPF에 대한 약간의 경험이 있습니다. 나는 할 수있는 일이 무엇인지를 알고 있지만 그것을 끝내는 방법에 대해서는별로 경험하지 못했습니다.

__postCloseAuditBy의 텍스트 값을 기반으로 XAML을 통해 __postCloseAudit 확인란을 어떻게 확인할 수 있습니까? 텍스트 길이가 0보다 큰 경우 확인란을 선택해야합니다.

<CheckBox x:Name="__postCloseAudit" 
      Tag="{Binding LoginId}" 
      Click="__postCloseAudit_Click"> 

    <WrapPanel> 

     <TextBox x:Name="__postCloseAuditBy" 
       Width="94" 
       Text="{Binding PostCloseAuditBy }" /> 

     <TextBox x:Name="__postCloseAuditOn" 
       Width="132" 
       Text="{Binding PostCloseAuditOn }" /> 

    </WrapPanel> 

</CheckBox> 

답변

1

당신은 value converter를 작성하고 TextBox의 텍스트에 IsChecked 속성을 바인딩합니다. 변환기의 역할은 텍스트를 입력으로 사용하여 길이를 기준으로 확인 된 상태를 결정하는 것입니다. 이것은 별도의 클래스에있을 것이므로 정확히 코드 숨김이 아니지만 가까운 것입니다.

예 계산기 :

[ValueConversion(typeof(string), typeof(bool?))] 
public class TextToIsBoolConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, 
          object parameter, CultureInfo culture) 
    { 
     var s = (string)value; 
     return s.Length > 0; 
    } 

    public object ConvertBack(object value, Type targetType, 
           object parameter, CultureInfo culture) 
    { 
     throw new NotSupportedException(); 
    } 
} 

그리고 같을 것이다 바인딩 :

<CheckBox x:Name="__postCloseAudit" 
    Tag="{Binding LoginId}" 
    Click="__postCloseAudit_Click" 
    IsChecked="{Binding ElementName=__postCloseAuditBy, Path=Text, Converter={StaticResource myConverter}}"> 

당신은 다음의 ViewModel이 컨버터의 기능을 포괄하고 기반으로 계산 된 속성을 노출해야 MVVM을 사용하는 경우 PostCloseAuditBy의 값

+1

위의 변환기에서 사용하는 특성을 본 적이 없습니다. 무엇을합니까? –

+0

@JohanLarsson : [this one] (http://msdn.microsoft.com/en-us/library/system.windows.data.valueconversionattribute.aspx)입니다. 정보가 필요한 것은 아닙니다 * 디자인 타임 도구는 변환기가 포함 된 어셈블리를 반영하여 이점을 얻을 수 있습니다. 이미 MSDN 예제가 있기 때문에 방금 MSDN 예제를 해제했습니다. – Jon

+0

@Jon; 흥미 롭 군. 나는 마침내 나의 지식이 갈수록 컨버터를 사용할 수 있다고 생각했다. 그러나 Path 속성을 Text 속성으로 설정할 수 있다고는 생각하지 못했습니다. 그러나, 뒤늦은 견해로는 그것은 완벽한 의미를가집니다. – AMissico

관련 문제