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 中是不允许的。
在 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 中是不允许的。