在WPF中隐藏按钮

时间:2010-06-16 10:49:42

标签: wpf

我想在Windows窗体中使用的WPF中隐藏按钮,例如button.visible=false

WPF中是否有相应的内容?

4 个答案:

答案 0 :(得分:49)

尝试以下方法之一:

button.Visibility = Visibility.Hidden;
button.Visibility = Visibility.Collapsed;

Hidden隐藏了按钮,但按钮仍会占用UI中的空间。 Collapsed会折叠按钮,使其宽度和高度为零。

答案 1 :(得分:13)

你应该设置

button.visibility = System.Windows.Visibility.Hidden;

button.visibility = System.Windows.Visibility.Collapsed;

或通过使用WPF XAML属性设置相同的...

答案 2 :(得分:4)

Visibility = Hidden

答案 3 :(得分:0)

如果使用MVVM设计模式,则可以利用绑定到按钮的命令的“ CanExecute”状态来实现此目的。

该按钮的默认行为将被禁用,但您可以更改此设置,以使它在下面的示例中不可见。


ViewModel

命令属性:

public DelegateCommand<TypeOfBoundItem> TheCommand
{
    get; private set;
}


实例化命令(在视图模型的构造函数中):

TheCommand = new DelegateCommand<TypeOfBoundItem>( Execute, CanExecute );


执行命令并确定是否可以执行的方法:

private bool CanExecute( TypeOfBoundItem item )
{
    return true or return false;
}

private bool Execute()
{
    // some logic
}


查看

在UserControl或Window的资源中,您定义了一些可见性转换器:

<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>


对于按钮,您将应用转换器来定义将按钮的“可见性”属性设置为按钮“ IsEnabled”状态的值的绑定。

因此,如果“ IsEnabled”状态为true-因为绑定的“ TheCommand”在其“ CanExecute”方法中返回true-该按钮将可见。

如果绑定命令的“ CanExecute”方法返回false,则该按钮将不可见。

<Button Command="{Binding TheCommand}"
        CommandParameter="{Binding}"
        Visibility="{Binding RelativeSource={RelativeSource Self},
                             Path=IsEnabled,
                             UpdateSourceTrigger=PropertyChanged,
                             Converter={StaticResource BooleanToVisibilityConverter}}">
</Button>