Я создал сборку для многоразовых элементов управления (среди прочего). В этой сборке есть файл Themes / Generic.xaml, который используется для пользовательских стилей элементов управления. Я хотел бы реализовать разные стили для разных элементов управления в отдельных файлах, поэтому я подумал, что было бы неплохо использовать объединенный словарь.
My Generic / Themes.xaml выглядит следующим образом:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="../Resources/MyTextBoxStyle.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
Файл MyTextBoxStyle.xaml выглядит следующим образом:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:general="clr-namespace:com.testsoft.General">
<Style TargetType="{x:Type general:MyTextBox}" BasedOn="{StaticResource {x:Type TextBox}}">
<Setter Property="IsReadOnly" Value="True" />
<Setter Property="Foreground" Value="Black" />
<Style.Triggers>
<Trigger Property="IsReadOnly" Value="True">
<Setter Property="Foreground" Value="Gray" />
</Trigger>
</Style.Triggers>
</Style>
</ResourceDictionary>
Я добавил статический конструктор, поэтому стиль будет применяться:
static MyTextBox()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(MyTextBox), new FrameworkPropertyMetadata(typeof(MyTextBox)));
}
При использовании этого пользовательскогоTextBox в другой сборке, приложение аварийно завершает работу со следующим исключением:
IOException: Die Ressource "resources/mytextboxstyle.xaml" kann nicht gefunden werden.
(ресурс не найден)
Однако, если я не использую подход MergedDictionary и добавлю всестиль XAML прямо в файл Generic / Themes.xaml, все работает нормально.
Я попытался изменить действие по построению файла MyTextBoxStyle.xaml на Resource, Embedded Resource, но это не помогло. Как я могу использовать MergedDictionaries и при этом иметь возможность использовать стилизованный элемент управления в других сборках?