Скрытие кнопки в WPF - PullRequest
       0

Скрытие кнопки в WPF

23 голосов
/ 16 июня 2010

Я хочу скрыть кнопку в WPF, используемую в форме Windows, например, button.visible=false

Есть ли эквивалент в WPF?

Ответы [ 4 ]

50 голосов
/ 16 июня 2010

Попробуйте выполнить одно из следующих действий:

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

Hidden скрывает кнопку, но кнопка все равно будет занимать место в пользовательском интерфейсе.Collapsed свернет кнопку так, что она будет иметь нулевую ширину и высоту.

13 голосов
/ 16 июня 2010

Вы должны установить

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

или

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

или с помощью свойства WPF XAML установить то же самое ...

4 голосов
/ 16 июня 2010

Visibility = Hidden

0 голосов
/ 02 июля 2018

Если вы используете шаблон проектирования 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 выОпределите некоторый конвертер visibilty:

<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>


Для кнопки вы определяете привязку, устанавливающую атрибут «Видимость» кнопки к значению состояния кнопок «IsEnabled», применяя конвертер.

Итак, если состояние «IsEnabled» истинно - потому чтоbound «TheCommand» возвращает true в своем методе «CanExecute» - кнопка будет видимой.

Если метод «CanExecute» связанной команды возвращает false, кнопка не будет видна.

<Button Command="{Binding TheCommand}"
        CommandParameter="{Binding}"
        Visibility="{Binding RelativeSource={RelativeSource Self},
                             Path=IsEnabled,
                             UpdateSourceTrigger=PropertyChanged,
                             Converter={StaticResource BooleanToVisibilityConverter}}">
</Button>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...