У меня есть библиотека настраиваемых элементов управления, в которой есть несколько настраиваемых элементов управления, которые я использую в своем основном приложении. У меня есть простой настраиваемый элемент управления, который позволяет пользователю выбирать значения толщины пера из поля со списком. Теперь я создаю новый настраиваемый элемент управления на основе списка и хочу включить поле со списком толщины пера в ItemTemplate нового настраиваемого элемента управления.
Я получаю эту ошибку:
«Невозможно создать экземпляр LineThicknessComboBox, определенный в сборке CustomControls ... Исключение было создано целью вызова. Ошибка в объекте« 10_T »в файле разметки CustomControls; component / Themes / CustomListBox.General.xaml '.
Вот XAML и код для LineThicknessComboBox:
namespace CustomControls
{
public class LineThicknessComboBox : ComboBox
{
public LineThicknessComboBox()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(LineThicknessComboBox)
, new FrameworkPropertyMetadata(typeof(LineThicknessComboBox)));
}
}
}
и в LineThicknessCombobox.Generic.xaml:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:CustomControls">
<Style TargetType="{x:Type local:LineThicknessComboBox}" BasedOn="{StaticResource {x:Type ComboBox}}">
<Setter Property="ItemTemplate">
<Setter.Value>
<DataTemplate>
...
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
Вот XAML и код для моего нового CustomListBox:
namespace CustomControls
{
public class CustomListBox : ListBox
{
public CustomListBox()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(CustomListBox)
, new FrameworkPropertyMetadata(typeof(CustomListBox)));
}
}
}
и в CustomListBox.Generic.xaml:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:CustomControls">
<Style TargetType="{x:Type local:CustomListBox}" BasedOn="{StaticResource {x:Type ListBox}}">
<Setter Property="ItemTemplate">
<Setter.Value>
<DataTemplate>
<Border>
...
<local:LineThicknessComboBox />
...
</Border>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
А вот и мой Generix.xaml:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="CustomControls;component/Themes/LineThicknessComboBox.Generic.xaml"/>
<ResourceDictionary Source="CustomControls;component/Themes/CustomListBox.Generic.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
Я думаю, что у меня какая-то проблема с эталоном, но не могу понять, что не так. Программа компилируется и запускается без каких-либо предупреждений / ошибок, но когда CustomListBox создается в моем основном приложении, я получаю указанную выше ошибку. Без включения LineThicknessComboBox CustomListBox работает нормально.
Может ли кто-нибудь объяснить, почему я получаю эту ошибку? Можно включить мой настраиваемый элемент управления в другой, даже если они находятся в той же библиотеке настраиваемых элементов управления, верно?
Спасибо!