在WPF中,如何基于TextBox.Text值选中复选框?

在WPF中,如何基于TextBox.Text值选中复选框?,wpf,Wpf,如何基于文本框选中复选框。文本值 我对WPF有点经验。我知道可以做什么,但在如何做方面没有太多经验 如何根据\uu postCloseAuditBy的文本值通过XAML选中\u postCloseAudit复选框?如果文本长度大于零,则应选中该复选框 <CheckBox x:Name="__postCloseAudit" Tag="{Binding LoginId}" Click="__postCloseAudit_Click"> &

如何基于文本框选中复选框。文本值

我对WPF有点经验。我知道可以做什么,但在如何做方面没有太多经验

如何根据
\uu postCloseAuditBy
的文本值通过XAML选中
\u postCloseAudit
复选框?如果文本长度大于零,则应选中该复选框

<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>

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

转换器示例:

[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

的值公开一个计算出的属性。您从未见过转换器上方使用的属性,它做了什么?@JohanLarsson:它是。您不需要它,它具有信息作用(文档建议设计时工具可以通过反映包含转换器的程序集而受益)。我只是把它从MSDN示例中去掉,因为它已经存在了。@Jon;有趣。我终于想到我可以用一个转换器,因为这是我所知道的。但是,我从未想过可以将Path属性设置为Text属性。但是,事后看来,这是完全有道理的;否则,这将很容易O) 我被束缚在班级(模特)的束缚中;我使用
ValueConversion
使编程人员清楚了解转换器的用途。