C#:Caliburn Micro:如何使用数据绑定控制 WPF 按钮的属性?
Posted
技术标签:
【中文标题】C#:Caliburn Micro:如何使用数据绑定控制 WPF 按钮的属性?【英文标题】:C#: Caliburn Micro: How do I control the properties of a WPF Button using data binding? 【发布时间】:2020-12-24 16:35:14 【问题描述】:当用户按下按钮时,我希望该按钮消失并由确认按钮代替。下面的代码是我认为会使按钮消失的代码,但是当我单击按钮时,什么也没有发生。 DeleteButton() 方法使用 Caliburn Micro 约定正确连接到 XAML。如何从 ViewModel 控制按钮的可见性或任何其他属性?谢谢。
XAML:
<Button x:Name="DeleteButton" Visibility="Binding DeleteButtonVisibility"/>
视图模型:
bool _deleteButtonVisibility = true;
public bool DeleteButtonVisibility
get return _deleteButtonVisibility;
set
_deleteButtonVisibility = value;
NotifyOfPropertyChange(() => DeleteButtonVisibility);
public void DeleteButton()
DeleteButtonVisibility = false;
【问题讨论】:
您的绑定似乎很好,除了Visibility
的特殊情况始终需要从 bool 到 Visibility 枚举的转换器,但对于其他属性,这很好。
【参考方案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;
【讨论】:
太好了,谢谢!我打算使用 Visibility.Hidden。是否有充分的理由使用 Visibility.Collapsed?有什么区别? 您可以在这里查看:docs.microsoft.com/en-us/dotnet/api/…。本质上折叠意味着可以在隐藏按钮上绘制其他组件,而不是在视图中保留空间。隐藏只会显示隐藏按钮所在的空白区域。正如您打算更换按钮一样,Collapsed 似乎更合适。以上是关于C#:Caliburn Micro:如何使用数据绑定控制 WPF 按钮的属性?的主要内容,如果未能解决你的问题,请参考以下文章
C# WPF MVVM开发框架Caliburn.Micro 名称Transformer⑩①
使用 caliburn.micro wpf c# 更改视图名称
C# WPF MVVM开发框架Caliburn.Micro自定义引导程序④
C# WPF MVVM开发框架Caliburn.Micro快速搭建③
在 C# Caliburn Micro WPF 中异步和等待获取 HttpRequest 时更新 ProgressBar