Я пытаюсь создать пользовательский элемент управления WPF, который содержит ссылку на контейнер единиц, созданный в BootStrapper - например,
Причина в том, что я хотел бы, чтобы пользовательский элемент управления мог разрешать контейнер Unity, чтобы иметь возможность использовать некоторые из служб, которые были зарегистрированы в контейнере. например служба пользовательских предпочтений / служба предоставления прав.
До сих пор я создал свой пользовательский элемент управления и включил в файл кода следующее свойство зависимости
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); }
}
В форме WPF, где я пытаюсь включить свой пользовательский элемент управления, я добавил следующую строку в область ресурсов:
<Unity:UnityContainer x:Key="unitContainer"></Unity:UnityContainer>
В той форме, в которой я сам пытался создать пользовательский элемент управления:
<Globe:SomeCustomWPFControl Container="{DynamicResource unitContainer}" DockPanel.Dock="Right" x:Name="JimEditor1" Grid.Column="0" Grid.Row="3"></Globe:SomeCustomWPFControl>
Единственная информация об ошибке, которую я получаю во время выполнения, это
Ошибка в объекте 'System.Windows.Controls.Grid' в файле разметки '[имя сборки]; [путь / файл] .xaml' Строка 135, позиция 22.
Любые предложения относительно того, где я иду не так? Thx.
Полный 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>
Обновление. Похоже, проблема в наличии свойства DependencyProperty типа UnityContainer или IUnityContainer, если тип изменен на встроенный тип .Net, например, Строка тогда работает нормально. Есть идеи, почему у нас не может быть DependencyProperty типа UnityContainer или IUnityContainer?