#c# #wpf #caliburn.micro
#c# #wpf #caliburn.micro
Вопрос:
Когда пользователь нажимает кнопку, я бы хотел, чтобы эта кнопка исчезла и была заменена кнопкой подтверждения. Приведенный ниже код — это то, что, как я думал, заставит кнопку исчезнуть, но когда я нажимаю кнопку, ничего не происходит. Метод DeleteButton() правильно подключен к XAML с использованием соглашений Caliburn Micro. Как я могу управлять видимостью кнопки или любым другим свойством из ViewModel? Спасибо.
XAML:
<Button x:Name="DeleteButton" Visibility="{Binding DeleteButtonVisibility}"/>
ViewModel:
bool _deleteButtonVisibility = true;
public bool DeleteButtonVisibility
{
get { return _deleteButtonVisibility; }
set
{
_deleteButtonVisibility = value;
NotifyOfPropertyChange(() => DeleteButtonVisibility);
}
}
public void DeleteButton()
{
DeleteButtonVisibility = false;
}
Комментарии:
1. Ваша привязка кажется прекрасной, за исключением конкретного случая
Visibility
всегда требуется конвертер из bool в Visibility enum, но для других свойств это нормально.
Ответ №1:
Видимость не является логической, это System.Windows.Visibility
Попробуйте это:
Visibility _deleteButtonVisibility = Visibility.Visible;
public Visibility DeleteButtonVisibility
{
get { return _deleteButtonVisibility; }
set
{
_deleteButtonVisibility = value;
NotifyOfPropertyChange(() => DeleteButtonVisibility);
}
}
public void DeleteButton()
{
DeleteButtonVisibility = Visibility.Collapsed;
}
Комментарии:
1. Замечательно, спасибо! Я собирался использовать видимость. Скрыто. Есть ли веская причина использовать видимость. Свернутый? В чем разница?
2. Вы можете посмотреть здесь: learn.microsoft.com/en-us/dotnet/api /… . По сути, свернутый означает, что другие компоненты могут быть нарисованы поверх скрытой кнопки вместо резервирования места в представлении. Hidden просто отобразит пустую область, где находится скрытая кнопка. Как вы и предполагали при замене кнопки, свернутый вариант казался более подходящим.