我正在使用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。我认为我错过了一些东西。
[您的ICommand
实现是错误的,@ Fildor在链接this question的评论中也曾指出,这些帮助我提出了这个答案。
在模型中,您需要将RelayCommand
与View
的Button
绑定。
private RelayCommand IsSelectedCommand {get; set;}
// then your void isSelected function, this is the command to be called if button is clicked
public void isSelectedCommand()
{
IsSelected = !IsSelected;
}
public your_model()
{
this.IsSelectedCommand = new RelayCommand(this.isSelectedCommand)
}
然后绑定此RelayCommand
的IsSelectedCommand
,而不是直接将您的IsSelected
绑定到View的Button
中。
<Button Command="{Binding IsSelectedCommand, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"> Click </Button>