По моему мнению, мы можем использовать INofityProperty в приложении стиля MVVM с кодом, подобным следующему
object _SelectedPerson;
public object SelectedPerson
{
get
{
return _SelectedPerson;
}
set
{
if (_SelectedPerson != value)
{
_SelectedPerson = value;
RaisePropertyChanged("SelectedPerson");
}
}
}
Теперь я видел отличный пример Джоша Смита, где он реализует дополнительный код, чтобы зафиксировать, что произойдет, если разработчик набирает имя свойства, которое не распознается, например, опечатка!
Скажите, пожалуйста, если вы ненавидите это, но есть способ получить имя метода из трассировки стека. Таким образом, мы могли бы вместо этого реализовать что-то вроде
object _SelectedPerson;
public object SelectedPerson
{
get
{
return _SelectedPerson;
}
set
{
if (_SelectedPerson != value)
{
_SelectedPerson = value;
RaisePropertyChanged(Current.Method);
}
}
}
static class Current
{
public static string Method()
{
StackTrace st = new StackTrace();
return (st.GetFrame(1).GetMethod().Name.Split('_')[1]);
}
}
Я могу только предположить, что это всегда будет работать, поскольку событие RaisePropertyChanged всегда встречается в Setter (и если я ошибаюсь, пожалуйста, исправьте меня).
Теперь, пожалуйста, обратите внимание: я не в состоянии действительно попробовать это, потому что на работе (где я могу работать над большими проектами) я все еще на .NET 2.0, и поэтому WPF/MVVM далеко в будущем, но я учусь в свое время.
Итак, мой вопрос от тех, кто его использовал, действительно ли лучше иметь подход, который предупреждает пользователя об ошибке по сравнению с удалением опции для ошибки (или вы чувствуете, что я что-то понял? ); Дело в том, что Джош Смит признан экспертом в этой области, и поэтому, если он предложит этот подход, то, как правило, я буду слепо, но в этом случае я не могу помочь, но викторину и чувствую необходимость понять больше.