Pourquoi ne WPF en charge la liaison de propriétés d'un objet, mais pas sur des champs?

J'ai un service WCF qui passe autour de mises à jour de statut via une structure comme ceci:

[DataContract]
public struct StatusInfo
{
    [DataMember] public int Total;
    [DataMember] public string Authority;
}
...
public StatusInfo GetStatus() { ... }

J'expose une propriété dans un ViewModel comme ceci:

public class ServiceViewModel : ViewModel
{
    public StatusInfo CurrentStatus
    {
        get{ return _currentStatus; }
        set
        { 
            _currentStatus = value;
            OnPropertyChanged( () => CurrentStatus );
        }
    }    
}

Et XAML comme suit:

<TextBox Text="{Binding CurrentStatus.Total}" />

Quand je lance l'application, je vois des erreurs dans la fenêtre de sortie indiquant que le Total de la propriété ne peut pas être trouvé. J'ai vérifié et revérifié et j'ai tapé correctement. La il m'est apparu que les erreurs indiquent spécifiquement que la "propriété" ne peut pas être trouvé. L'ajout d'une propriété à la struct fait le travail très bien. Mais cela me semble étrange que WPF ne peut pas gérer une voie de liaison vers les champs. Du point de vue syntaxique leur accès est le même dans le code et il semble ridicule d'avoir à créer une vue personnalisée modèle juste pour la StatusInfo struct. Ai-je manqué quelque chose à propos de WPF liaison? Pouvez-vous lier à un champ ou est la propriété de liaison de la seule manière possible?

OriginalL'auteur Paul Alexander | 2009-05-09