Стили из ресурсов не используются, когда создается экземпляр UserControl в другом классе - PullRequest
0 голосов
/ 16 ноября 2011

Я создаю собственный WPF Expander, унаследованный от общего Expander. У меня есть файл со стилями по пути MyAssembly/Theme/generic.xaml. Я вижу, что стили применяются в конструкторе, но не работают с программой .

MyExpander.xaml:

<Expander x:Class="Path.To.MyExpander"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008">
    <Expander.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="pack://application:,,,/MyAssembly;component/Theme/generic.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Expander.Resources>
    ...

Generic.xaml:

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008">
    ...

код, в котором я запускаю расширители:

class Viewer
{
    private void GenerateExpanders()
    {
        this.Expanders.Children.Clear();
        foreach (...)
        {
            MyExpander ex = new MyExpander();
            ex.HeaderText.Text = "Sample";
            ex.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch;
            ex.IsExpanded = true;
            this.Expanders.Children.Add(ex);
        }
    }
}

Все три файла находятся в одной сборке, но экземпляр класса Viewer создается в другой сборке. Что-то я не так делаю?

1 Ответ

0 голосов
/ 24 ноября 2011

у меня было

<Style TargetType="Expander"

но должно быть

<Style TargetType="MyExpander"

Я не осознавал, что это больше не был Expander - это был MyExpander (class MyExpander : Expander)

...