几个(新手)问题:

1)我看到很多

public Person SelectedPerson { get; set; }


我假设这不会触发财产变更?

因此,如果我想这样做,我必须提供以下内容吗?

    private Person selectedPerson;
    public Person SelectedPerson
    {
        get
        {
            return this.selectedPerson;
        }
        set
        {
            if ((this.selectedPerson != value))
            {
                this.selectedPerson = value;
                base.OnPropertyChanged("SelectedPerson");
                // Note: Using ViewModelBase

            }
        }
    }


2)如果我有以下情况:

    public bool CanDeletePerson
    {
        get
        {
            return SelectedPerson != null;
        }
    }


以及在XAML中

< Button IsEnabled="{Binding CanDeletePerson}"
Command="{Binding DeletePersonCommand}"> Delete </ Button >


如何获得它来重新评估CanDeletePerson属性?
基本上,它最初是禁用的,但是当我单击网格并逐行移动时,SelectedPerson正在更新,但是CanDeletePerson没有获得更新后的值,那么如何获得它以再次实际检查值?

3)我明白了


  ...取决于是否有任何事件订阅


您如何订阅活动?

最佳答案

正确-不会触发
是的,要重新评估CanDeletePerson,您可以在CanDeletePerson上引发PropertyChanged,如下所示

    set
    {
        if ((this.selectedPerson != value))
        {
            this.selectedPerson = value;
            base.OnPropertyChanged("SelectedPerson");
            base.OnPropertyChanged("CanDeletePerson");
        }
    }

像任何正常事件一样,但是如果您使用的是WPF,通常不需要显式订阅

07-26 09:29