Ale*_*der 0 c# wpf mvvm inotifypropertychanged
这两种变体(性能,内存泄漏或指南)之间是否存在差异?
NPC:
private ICommand mGoBackCommand;
public ICommand GoBackCommand
{
get { return mGoBackCommand; }
set
{
if (mGoBackCommand != value)
{
mGoBackCommand = value;
RaisePropertyChanged("GoBackCommand");
}
}
}
Run Code Online (Sandbox Code Playgroud)
汽车财产:
public ICommand GoBackCommand {get; set;}
Run Code Online (Sandbox Code Playgroud)
UPD:最后一个问题是:我是否可以在VievModel中使用自动属性,如果它们是在构造函数中分配一次的简单命令,或者由于性能,内存泄漏或其他原因我需要在VM的每个属性上实现NPC?
如果您正在编写一个实现的类INotifyPropertyChanged,那么您正在签订一份合同,其中说" PropertyChanged当任何属性发生变化时,我会引发该事件."
但是,如果您知道某个属性在实例的生命周期内不会发生变化的事实,那么您通过永远不会PropertyChanged为该属性进行筹集来满足该合同.
因此,如果您在构造函数中设置一次属性("将其设置为忘记它"属性),那么您不需要破坏属性只是为了支持INotifyPropertyChanged,您可以使用自动实现的属性.但是,在此您应该更改此属性:
public ICommand GoBackCommand { get; set; }
Run Code Online (Sandbox Code Playgroud)
对此:
public ICommand GoBackCommand { get; private set; }
Run Code Online (Sandbox Code Playgroud)
这样它就不会在课外被意外修改.
| 归档时间: |
|
| 查看次数: |
1435 次 |
| 最近记录: |