如何使用复选框使文本框可见并隐藏?
所以当我没有选中复选框时,我试图使我的文本框不可见。 一切正常,直到我勾选方框然后再取消选中它。 文本框将保持可见。
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
/ Collapsed
的True
/ 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
,它返回Visible
为true
, Collapsed
为false
。 Collapsed
与Hidden
不同: Hidden
元素stil声明屏幕上的空间就像它是可见的一样。
有一种方法可以使用Trigger实现XAML中的所有内容: