XAML 找不到键的.NET MAUI静态资源

tyg4sfes  于 2023-02-01  发布在  .NET
关注(0)|答案(1)|浏览(186)

当我将mainpage注入到App类构造函数时,我得到StaticResource not found for key但如果我不在App构造函数上注入Mainpage,它会工作。
我有一个全局资源主题文件,我在App.xaml.cs上调用它,在这里我声明了静态资源:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Resources/Styles/Colors.xaml" />
            <ResourceDictionary Source="Themes/LightTheme.xaml" /> <!--Theme file-->
            <ResourceDictionary Source="Themes/DarkTheme.xaml" /> <!--Theme file-->
            <ResourceDictionary Source="Resources/Styles/Styles.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

这是我的App.cs文件:

public App(MainPage mainPage)
{

    InitializeComponent();

    MainPage = mainPage;

}

以下代码位于MainPage.xaml中:

<StackLayout BackgroundColor="{StaticResource SecondaryBackroundColor}" Grid.Row="0">
        <Image 
            Source="ic_logo.png"
            SemanticProperties.Description="Cute dot net bot waving hi to you!"
            HeightRequest="200"
            HorizontalOptions="Center"  VerticalOptions="CenterAndExpand"/>

    </StackLayout>

我已将MainPage添加到mauiprogram.cs类中
builder.Services.AddTransient<MainPage>();

rqenqsqc

rqenqsqc1#

我创建了一个新项目来测试您的代码,也遇到了同样的错误。然后我添加了两个断点。一个是MainPage的构造方法,另一个是App.cs的构造方法。
使用builder.Services.AddTransient<MainPage>();时发现mainpage的构造方法比app.cs的构造方法执行的早,所以出现了错误。
最后,你可以在github上跟进这个关于Can't use App.xaml resources after Dependency Injection .NET MAUI的问题,或者直接用DynamicResource代替StaticResource,比如:

<StackLayout BackgroundColor="{DynamicResource SecondaryBackroundColor}"

我试过了,使用DynamicResource是有效的。

相关问题