我发现有关此主题的更多问题,但我找不到答案。
我需要更改控制点击的可见性。
在win form app中,如果我是对的,我可以使用类似的东西:
somecontrol.Visible = !somecontrol.Visible;
但当app为wpf
时,我无法使用这种方式。
有没有办法以“优雅”的方式执行此操作if-else
?
Thanx
答案 0 :(得分:8)
在WPF UIElement.Visibility有3个状态;可见/隐藏/折叠。
如果隐藏,控件仍会影响周围控件的布局,可见性值为Collapsed的元素不会占用任何布局空间。
您可以在可见和隐藏之间切换或折叠。
somecontrol.Visibility = somecontrol.Visibility == Visibility.Visible ? Visibility.Collapsed : Visibility.Visible;
答案 1 :(得分:3)
在WPF中,您尝试更改的属性称为可见性,您可以按照以下说明使用它。
uiElement.Visibility = Visibility.Hidden;
// Visibility.Collapsed;
// Visibility.Visible;
状态像@Glen已经提到的那样互动。 你是什么意思..
有没有办法在某些事情上做到这一点"优雅"然后if-else?
如果你不想写整个构造,只需使用较短的形式..
uiElement.Visibility = uiElement.Visibility == Visibility.Visible // condition
? Visibility.Collapsed // if-case
: Visibility.Visible; // else-case
答案 2 :(得分:2)
WPF上下文中的自然选项是使用MVVM模式。所以你有一个像
这样的控件<Button Content="I'm a button"
Visibility={Binding BtnVis} />
在您的DataContext中,您将拥有一个可以根据自己的意愿设置的公共属性。
class DataContext
{
public Visibility BtnVis { get; set; }
}
另一个常用的选择是使用转换器,因为在您的ViewModel中,您可能希望拥有bool属性,而不是UIElement.Visibility
属性。