Je crée un petit programme de finances personnelles qui utilise les «enveloppes» comme méthode de budgétisation. Je le fais principalement comme un moyen d'apprendre WPF & MVVM. J'ai rencontré un problème où je ne peux pas DataBind aux propriétés personnalisées que j'ai créé dans mon ObservableCollection personnalisé, vu ici:Problème de liaison de données avec les propriétés ObservableCollection personnalisées
public class ObservableEnvelopeCollection : ObservableCollection<Envelope>
{
public decimal Total
{
get
{
decimal total = 0;
foreach (Envelope env in this)
{
total += env.Balance;
}
return total;
}
}
public decimal SavingsTotal
{
get
{
blah blah. . .
}
}
}
Je suis en mesure de DataBind mon DataGrid à la collection sans problème, mais en dessous de ma grille de données, j'ai des étiquettes dont j'ai besoin pour afficher le total des soldes pour les enveloppes de la collection. Je suis capable de créer une base de données avec la propriété Count de la collection, qui est une propriété de la classe ObservableCollection parente, mais je ne peux pas créer de base de données vers Total ou SavingsTotal à partir de ma classe personnalisée. L'étiquette est simplement vide lorsque le programme est exécuté, et si j'utilise le concepteur VS2010 et que j'accède au petit assistant de liaison de données pour le contenu de l'étiquette, il affiche 'Total' et affiche l'info-bulle: n'a pas pu être résolu. " Encore une fois, si je change de chemin vers EnvColl.Count cela fonctionne.
<Label Content="{Binding Path=EnvColl.Total}"/>
Une note plus, dans mon ViewModel je peux accéder aux propriétés et au total SavingsTotal dans ma collection sans problème, il est juste en XAML/databinding que cela ne fonctionne pas.
Avez-vous essayé avec BindsDirectlyToSource = true sur la liaison? –