2017-02-21 4 views
0

In Silverlight, mit MVVM Ich definiere eine Basisklasse für verwandte Viewmodels und eine Liste der möglichen Werte für eine Eigenschaft in mehreren untergeordneten Klassen definiert:Silverlight: Bindung an eine statische Eigenschaft definiert in einem Vorfahren Klasse des 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; 
    } 
} 

Jetzt definiere ich meine Viewmodel:

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

Und ich binden an meine Viewmodel

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

Dann schlägt die Bindung für MyPropertyValueList fehl. Aber wenn die MyPropertyValueList in der Kindklasse definiert ist, funktioniert es. Was mache ich falsch ?

Antwort

1

Sie definierten MyPropertyValueList als statische Eigenschaft. In Silverlight ist dies nicht erlaubt.

+0

Danke, es funktioniert, wenn ich das statische Schlüsselwort entfernen. Aber warum funktioniert es auch (mit dem Schlüsselwort static), wenn die Eigenschaft in der Kindklasse definiert ist? – user2223898

Verwandte Themen