相关疑难解决方法(0)

CanExecuteChanged和CommandManager.RequerySuggested的实际任务是什么?

我从Josh Smith的MVVM 教程中获得了以下代码.

任何人都可以快速解释这段代码实际上做了什么吗?

public event EventHandler CanExecuteChanged
{
    add { CommandManager.RequerySuggested += value; }
    remove { CommandManager.RequerySuggested -= value; }     
}
Run Code Online (Sandbox Code Playgroud)

我无法理解两件事:

  1. 什么是CanExecuteChanged事件呢?
  2. 这是CommandManager.RequerySuggested做什么的?

上面的代码RelayCommand来自这里的Class .

wpf relaycommand icommand

36
推荐指数
2
解决办法
1万
查看次数

Prism:必须显式调用RaiseCanExecuteChanged()

下面是一个非常简单的Prism.Wpf示例,DelegateCommand其中包含两个ExecuteCanExecute委托.

假设这CanExecute取决于某些属性.看起来Prism's DelegateCommand不会CanExecute在这个属性发生变化时自动重新评估条件,就像RelayCommand其他MVVM框架一样.相反,您必须在属性设置器中显式调用RaiseCanExecuteChanged().这会在任何非平凡的视图模型中导致大量重复代码.

有没有更好的办法?

ViewModel:

using System;
using Prism.Commands;
using Prism.Mvvm;

namespace PrismCanExecute.ViewModels
{
public class MainWindowViewModel : BindableBase
{
    private string _title = "Prism Unity Application";
    public string Title
    {
        get { return _title; }
        set { SetProperty(ref _title, value); }
    }
    private string _name;
    public string Name
    {
        get { return _name; }
        set
        {
            SetProperty(ref _name, value);

            // Prism doesn't track …
Run Code Online (Sandbox Code Playgroud)

wpf prism mvvm delegatecommand

1
推荐指数
1
解决办法
2634
查看次数

标签 统计

wpf ×2

delegatecommand ×1

icommand ×1

mvvm ×1

prism ×1

relaycommand ×1