Стили в MergedDictionaries не найдены - PullRequest
0 голосов
/ 20 ноября 2018

Я получаю ошибку времени выполнения StaticResource not found for key при использовании Style в ResourceDictionary, объединенном с помощью MergedDictionaries.

App.xaml

   <Application x:Class="MyApp.App"
             xmlns:local="MyApp"
             xmlns:assets="clr-namespace:MyApp.Assets">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <assets:Styles />
            </ResourceDictionary.MergedDictionaries>
                 <Style ...>
                    <!-- other styles... -->

Styles.xaml

<ResourceDictionary x:Class="MyApp.Assets.Styles">
    <Style x:Key="Subheading" TargetType="Frame">
        <Setter Property="BackgroundColor" Value="DarkSlateGray"></Setter>
        <Setter Property="HasShadow" Value="True"></Setter>
    </Style>
</ResourceDictionary>

Styles.xaml.cs

namespace MyApp.Assets
{
    [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class Styles : ResourceDictionary
    {
        public Styles () { }
    }
}

Page.xaml

        <Frame Style="{StaticResource Subheading}">

Приложение компилируется правильно - оно просто не может найтиSubheading во время выполнения.Если я скопирую узел <Style> непосредственно в App.xaml, он работает нормально.Может кто-нибудь найти мой неправильный синтаксис?Или есть ли способ во время выполнения взглянуть на Application.Resources, чтобы я мог выяснить, где он находится?

1 Ответ

0 голосов
/ 20 ноября 2018

Вам не хватает вызова метода InitializeComponent() внутри вашего Styles конструктора.Сделайте это так:

namespace MyApp.Assets
{
    [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class Styles : ResourceDictionary
    {
        public Styles()
        {
            InitializeComponent();
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...