Je tente de créer un contrôle personnalisé WPF qui inclut une référence au conteneur Unity qui a été créé dans le BootStrapper, par exemple.Utilisation de Unity dans les contrôles personnalisés WPF
La raison étant que je voudrais que le contrôle personnalisé soit capable de résoudre le conteneur de l'unité pour pouvoir utiliser certains des services qui ont été enregistrés dans le conteneur. par exemple. un service de préférences utilisateur/un service de droits.
Jusqu'à présent, j'ai créé mon contrôle personnalisé et inclus dans le code behind la propriété de dépendance suivante
public static readonly DependencyProperty ContainerProperty = DependencyProperty.Register("Container", typeof(UnityContainer), typeof(SomeCustomWPFControl), new PropertyMetadata("DefaultTestValue"));
public UnityContainer Container
{
get { return (UnityContainer)GetValue(ContainerProperty); }
set { SetValue(ContainerProperty, value); }
}
Dans la forme WPF où je tente d'inclure mon contrôle personnalisé, j'ai ajouté la ligne suivante dans la zone Ressources:
<Unity:UnityContainer x:Key="unitContainer"></Unity:UnityContainer>
Dans la forme, il est auto que j'ai essayé de créer le contrôle personnalisé:
<Globe:SomeCustomWPFControl Container="{DynamicResource unitContainer}" DockPanel.Dock="Right" x:Name="JimEditor1" Grid.Column="0" Grid.Row="3"></Globe:SomeCustomWPFControl>
La seule information d'erreur que je reçois au moment de l'exécution est
Erreur à l'objet 'System.Windows.Controls.Grid' dans le fichier de balisage '[nom de montage]; [path/file] .xaml' Ligne 135 Position 22
Des suggestions sur les endroits où je me trompe? THX.
pleine Xaml:
<UserControl x:Class="DB.GPF.Globe.Views.JimTestPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Globe="clr-namespace:DB.GPF.Globe"
xmlns:Unity="clr-namespace:Microsoft.Practices.Unity;assembly=Microsoft.Practices.Unity">
<UserControl.Resources>
<Unity:UnityContainer x:Key="unitContainer"></Unity:UnityContainer>
</UserControl.Resources>
<Grid>
<Globe:SomeCustomWPFControl Container="{DynamicResource unitContainer}" x:Name="JImTestControl1"></Globe:SomeCustomWPFControl>
</Grid>
Mise à jour: Le problème semble avoir un DependencyProperty de type UnityContainer ou IUnityContainer, si le type est changé à un type .Net intégré, par exemple chaîne alors ça va bien. Des idées pour lesquelles nous ne pouvons pas avoir un DependencyProperty de type UnityContainer ou IUnityContainer?
Pouvez-vous poster le reste de votre Xaml? –
Voici le Xaml dans son intégralité: – Jim
ajouté ci-dessus .... – Jim