J'ai deux projets avec une infrastructure sous-jacente commune. Le premier est Silverlight 3 et le second est Silverlight 4.Quand la DefaultValue d'un DependencyProperty gagne-t-elle sa valeur à travers la définition PropertyMetadata?
J'ai un ViewRegionControl, que je déclare en XAML pour définir des régions. La classe ViewRegionControl est responsable de la gestion de la vue enregistrée visible et plus encore. Il possède une propriété de dépendance qui sert de registre pour les régions enregistrées.
public static readonly DependencyProperty ViewRegionRegistryProperty = DependencyProperty.Register(
"ViewRegionRegistry",
typeof(IViewRegionRegistry),
typeof(ViewRegionControl),
new PropertyMetadata(IoC.TryResolve<IViewRegionRegistry>()));
public IViewRegionRegistry ViewRegionRegistry
{
get { return (IViewRegionRegistry)GetValue(ViewRegionRegistryProperty); }
set { SetValue(ViewRegionRegistryProperty, value); }
}
La valeur par défaut est transmise en tant qu'objet instancié à partir de mon conteneur IoC. Dans les deux implémentations, ViewRegionRegistry n'est pas défini par XAML nulle part et uniquement via ce point.
L'initialisation prévue se produit avec succès sur mon projet Silverlight 3 mais pas sur mon projet Silverlight 4. Qu'est-ce qui a changé dans Silverlight 4? Une propriété de dépendance obtient-elle par défaut la valeur par défaut dans Silverlight 4?
L'intention ici est de créer une référence Singleton obtenue via ViewRegionRegistry dp.
Vérifier http://msdn.microsoft.com/en-us/library/cc903949%28v=VS.95%29.aspx
Bien que, je l'une dp dans le rappel et msdn d'un autre dp dit clairement:
« Une façon d'éviter ces problèmes est de faire en sorte que les callbacks utilisent uniquement d'autres propriétés de dépendance, et que chaque propriété de dépendance a une valeur par défaut établie dans le cadre de ses métadonnées enregistrées. "
Je l'ai fait. Pourquoi le comportement diffère-t-il entre les versions?
De quelle façon est le « Silverlight 4 une » infructueuse? une erreur? L'IoC ne trouve pas d'export offrant une implémentation de 'IViewRegionRegistry'? Quelle? – AnthonyWJones
ViewRegionRegistry est toujours null. Bien que, IoC.TryResolve() est OK, après avoir vérifié cet appel dans la fenêtre immédiate. –