如何根据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>
答案 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
的值公开计算属性。