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 ?
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