如何使用复选框使文本框可见并隐藏?

所以当我没有选中复选框时,我试图使我的文本框不可见。 一切正常,直到我勾选方框然后再取消选中它。 文本框将保持可见。

private void chbon_Checked_1(object sender, RoutedEventArgs e) { if (cchbon.IsChecked == true) { txtshow.Visibility = System.Windows.Visibility.Visible; } if (chbon.IsChecked == false) { txtshow.Visibility = System.Windows.Visibility.Hidden; } } 

这是Checkbox的XAML:

   

取消选中时, Checked事件不会触发。 Unchecked的事件就是为此目的。

 ... Checked="chbon_Checked" Unchecked="chbon_Unchecked"/> 

并且无需监控cchbon.IsChecked后面的代码:

 private void chbon_Checked(object sender, RoutedEventArgs e) { txtshow.Visibility = System.Windows.Visibility.Visible; } private void chbon_Unchecked(object sender, RoutedEventArgs e) { txtshow.Visibility = System.Windows.Visibility.Hidden; } 

或者,您可以通过绑定和转换器来完成:

    ...   

请注意,一旦您管理此方法,您可能希望实现自定义转换器,因为内置的BooleanToVisibilityConverter返回Visible / CollapsedTrue / False输入(而不是Visible / Hidden

Checked事件处理程序仅在您选中复选框时才会触发,而不是取消选中它。 您还可以在XAML中使用Unchecked处理程序来隐藏文本框。

 private void chbon_Unchecked(object sender, RoutedEventArgs e) { txtshow.Visibility = System.Windows.Visibility.Hidden; } private void chbon_Checked_1(object sender, RoutedEventArgs e) { txtshow.Visibility = System.Windows.Visibility.Visible; } 

当CheckBox进入未选中状态时, Unchecked事件将触发(simmetric为Checked )。 为它们添加事件处理程序。

  
 private void chbon_Checked_1(object sender, RoutedEventArgs e) { txtshow.Visibility = cchbon.IsChecked ? Visibility.Visible : Visibility.Hidden; } 

通常使用绑定到boolean属性来设置某个元素的Visibility。 .NET中有一个BooleanToVisibilityConverter ,它返回VisibletrueCollapsedfalseCollapsedHidden不同: Hidden元素stil声明屏幕上的空间就像它是可见的一样。

有一种方法可以使用Trigger实现XAML中的所有内容: