Silverlight:绑定到视图模型的祖先 class 中定义的静态 属性

Silverlight: binding to a static property defined in an ancestor class of the viewmodel

在 Silverlight 中,我使用 MVVM 为相关的 ViewModel 定义了一个基础 class,并为在多个子 classes 中定义的 属性 定义了一个可能值列表:

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 是在子 class 中定义的,它就可以工作。我做错了什么?

您将 MyPropertyValueList 定义为 static 属性。在 Silverlight 中是不允许的。