【发布时间】:2020-01-29 11:34:57
【问题描述】:
我正在使用Button 来更改我的IsSelected 属性。我正在使用MVVM Light 的ViewModelBase 来引发 PropertyChanged 事件。
型号
private bool _isSelected = true;
public bool IsSelected
{
get
{
return _isSelected;
}
set
{
Set(IsSelected, ref _isSelected, value);
Messenger.Default.Send(Message.message);
}
}
//ICommand
public const string isSelectedCommandPropertyName = "isSelectedCommand";
private ICommand _isSelectedCommand;
public ICommand isSelectedCommand
{
get
{
IsSelected = !IsSelected;
return null;
}
set
{
Set(isSelectedCommandPropertyName, ref _isSelectedCommand, value);
Messenger.Default.Send(Message.message);
}
}
查看
<Button Command="{Binding IsSelected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"> Click </Button>
如果我使用ToggleButton 的Ischecked 属性,这组代码可以成功运行。此代码对按钮有效EXCEPT。我想我错过了一些东西。
【问题讨论】:
-
你有异常吗?编译器错误?命令如何知道将属性设置为什么?
-
ToggleButton.IsChecked是一个布尔属性,所以绑定一个布尔 VM 属性在那里工作......Button.Commind是一个ICommand属性,所以你不能指望布尔值在那里工作。问:既然你已经发现了ToggleButton,为什么不用呢? -
首先:您是否收到任何错误消息?是运行时错误还是编译错误?那么:按钮命令没有布尔参数。如果您想切换每次点击,您需要额外的代码。 ToggleButton 通过将您的视图模型绑定到的布尔属性为您做到这一点。换句话说:您正在尝试将方形块放入圆孔中。
-
@Fildor,我已经回答了你,我没有收到任何错误,无论是运行时还是编译。仅此而已,它显然不起作用。单击时按钮会产生涟漪,但什么也没有。
标签: c# mvvm mvvm-light