Я работаю над приложением WP7, и у меня возникли проблемы с обновлением TextBlock
, привязанного к свойству.Я новичок в MVVM и C # в целом, поэтому я не уверен, что делаю не так.
В конце концов, я решил эту проблему, но я не понимаю, почему мое решение работает(всегда весело ...), поэтому я очень ценю ваше руководство.
В модели моего приложения у меня изначально было что-то вроде этого:
// Broken
namespace MyApp.MyModel
{
public class MetaData : INotifyPropertyChanged
{
private StatusType status;
public StatusType Status
{
get { return status; }
set
{
status = value;
statusMessage = ConvertStatusToSomethingMeaningful(value);
}
}
private string statusMessage;
public string StatusMessage
{
get { return statusMessage; }
private set
{
statusMessage = value;
// This doesn't work
NotifyPropertyChanged("StatusMessage");
}
}
...
}
}
Status
это enum
, и когда он установлен моим приложением, он также устанавливает StatusMessage
(что является более читабельным описанием, чтобы показать пользователю).TextBlock
My View привязан к StatusMessage
, но не обновляется с использованием вышеуказанного кода.
Однако, если я переместу NotifyPropertyChanged("StatusMessage")
в Status
, TextBlock
моего View обновится, как этодолжен.Однако я не понимаю, почему это работает, если исходный код выше не работает?
// Fixed
namespace MyApp.MyModel
{
public class MetaData : INotifyPropertyChanged
{
private StatusType status;
public StatusType Status
{
get { return status; }
set
{
status = value;
StatusMessage = ConvertStatusToSomethingMeaningful(value);
// This works
NotifyPropertyChanged("StatusMessage");
}
}
public string StatusMessage { get; private set; }
...
}
}
Заранее большое спасибо за помощь новичку:)