2017-02-21 38 views
0

В Silverlight, используя MVVM я определить базовый класс для связанных ViewModels и список возможных значений для свойства, определенного в нескольких дочерних классах:Silverlight: привязка к статическому собственности, определенной в предке классе 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; 
    } 
} 

Теперь я определяю мой ViewModel:

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

И я связываю с моей ViewModel

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

Затем сбой привязки для MyPropertyValueList. Но если MyPropertyValueList определен в дочернем классе, он работает. Что я делаю не так ?

ответ

1

Вы определили MyPropertyValueList как статические. Это запрещено в Silverlight.

+0

Спасибо, он работает, если я удаляю статическое ключевое слово. Но почему он также работает (используя ключевое слово static), если свойство определено в дочернем классе? – user2223898