当我将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>();
1条答案
按热度按时间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,比如:
我试过了,使用DynamicResource是有效的。