在WPF中,如何根据TextBox.Text值检查CheckBox?

时间:2013-04-29 22:54:15

标签: wpf

如何根据TextBox.Text值检查CheckBox?

我对WPF有一点经验。我知道可以做些什么,但没有太多关于如何完成它的经验。

如何根据__postCloseAudit的文本值检查XAML中的__postCloseAuditBy复选框?如果文本长度大于零,则应选中复选框。

<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 个答案:

答案 0 :(得分:1)

您编写value converter并将IsChecked属性绑定到TextBox的文本。转换器的工作是将文本作为输入,并根据其长度决定检查状态;这将是一个单独的类,所以它不是完全代码隐藏但它很接近。

示例转换器:

[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}}">

如果您使用的是MVVM,那么您的viewmodel应该包含转换器的功能,并根据PostCloseAuditBy的值公开计算属性。