Je travaille sur une application WP7 et j'ai eu quelques problèmes pour mettre à jour un TextBlock
lié à une propriété. Je suis nouveau à MVVM, et C# en général, donc je ne suis pas sûr de ce que je fais mal. En fin de compte, j'ai résolu ce problème, mais je ne comprends pas pourquoi ma solution fonctionne (toujours amusant ...), donc j'apprécierais vraiment vos conseils.Mise à jour d'une liaison TextBlock
Dans mon application de modèle, j'avais d'abord quelque chose comme ceci:
// 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
est un enum
, et quand il est fixé par mon application, elle fixe également StatusMessage
aussi (ce qui est une description plus lisible humaine montrez l'utilisateur). Le TextBlock
de My View est lié à StatusMessage
, mais il ne se met pas à jour en utilisant le code ci-dessus.
Cependant, si je déplace NotifyPropertyChanged("StatusMessage")
en Status
, les mises à jour TextBlock
de mon View comme il se doit. Cependant, je ne comprends pas pourquoi cela fonctionne quand le code original ci-dessus ne fonctionne pas?
// 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; }
...
}
}
Un grand merci à l'avance pour aider un débutant à :)
Pouvez-vous nous montrer '' ConvertStatusToSomethingMeaningful' et XAML'? –