2017-02-21 4 views
0

Dans Silverlight, en utilisant MVVM I définit une classe de base pour ViewModels connexes et une liste de valeurs possibles pour une propriété définie dans plusieurs classes d'enfants:Silverlight: la liaison à une propriété statique définie dans une classe ancêtre du viewmodel

namespace MyNameSpace 
{ 
    public class MyViewModelBase 
    { 
     public static List<MyPropertyClass> MyPropertyValueList 
     { 
      get 
      { 
       if (myPropertyValueList == null) 
       { 
        // fill the list 
       } 
       return myPropertyValueList; 
      } 
     } 
     private static List<MyPropertyClass> myPropertyValueList = null; 
    } 
} 

maintenant, je définir mon ViewModel:

namespace MyNameSpace.MyChild 
{ 
    public class MyViewModelChild 
    { 
     public MyPropertyClass MyProperty 
     { 
      get 
      { 
       return myProperty; 
      } 
      set 
      { 
       myProperty= value; 
       RaisePropertyChanged("MyProperty"); 
      } 
     } 
     ... 
    } 
} 

Et je lie à mon ViewModel

<controls:ChildWindow 
    x:Class="MyNameSpace.MyChild.MyChildEditor"> 
<ListBox ItemsSource="{Binding Path=MyPropertyValueList, Mode=OneTime}" SelectedValue="{Binding Path=MyProperty, Mode=TwoWay}"/> 

La liaison échoue ensuite pour MyPropertyValueList. Mais si le MyPropertyValueList est défini dans la classe enfant, cela fonctionne. Qu'est-ce que je fais mal ?

Répondre

1

Vous avez défini MyPropertyValueList comme propriété statique. Ce n'est pas autorisé dans Silverlight.

+0

Merci, cela fonctionne si je supprime le mot-clé statique. Mais pourquoi cela fonctionne également (en utilisant le mot-clé static) si la propriété est définie dans la classe enfant? – user2223898