我使用的是mvvmlight,我发现inpc的默认实现(来自mvvminpcmsg的代码片段)是:
/// <summary>
/// The <see cref="MyProperty" /> property's name.
/// </summary>
public const string MyPropertyPropertyName = "MyProperty";
private bool _myProperty = false;
/// <summary>
/// Sets and gets the MyProperty property.
/// Changes to that property's value raise the PropertyChanged event.
/// This property's value is broadcasted by the MessengerInstance when it changes.
/// </summary>
public bool MyProperty
{
get
{
return _myProperty;
}
set
{
if (_myProperty == value)
{
return;
}
RaisePropertyChanging(MyPropertyPropertyName);
var oldValue = _myProperty;
_myProperty = value;
RaisePropertyChanged(MyPropertyPropertyName, oldValue, value, true);
}
}
我想知道为什么要添加公共const字符串?
public const string MyPropertyPropertyName = "MyProperty";
我认为inpc实现并不需要它,也没有看到它的任何用法。 那为什么要添加呢?
答案 0 :(得分:1)
该属性的公共常量字符串将添加到您不在该类但需要处理属性更改事件的场景中。
答案 1 :(得分:0)
所有INPC实现都需要某种方法来解决哪个属性引发了更改通知。这通常通过以下方式完成:
CallerMemberNameAttribute
属性。在您的示例中,它使用属性的字符串名称。