WPF、Simple Injector 和 MaterialDesignThemes 静态资源无效。
WPF、Simple Injector 和 MaterialDesignThemes 静态资源无效。
我有一个使用WPF和Simple Injector和Material Design主题编写的示例应用程序。
这是我的程序文件:
private static Container Bootstrap() { // Create the container as usual. var container = new Container(); container.Options.DefaultScopedLifestyle = new AsyncScopedLifestyle(); // Register your types, for instance: container.Register<IFreewayReviewCreatorDbContext, FreewayReviewCreatorDbContext>(Lifestyle.Scoped); container.Register<IUnitOfWorkFactory, UnitOfWorkFactory>(Lifestyle.Transient); container.Register<IUnitOfWork, UnitOfWork>(Lifestyle.Scoped); container.Register<IReviewBodyBLL, ReviewBodyBLL>(Lifestyle.Transient); // Register your windows and view models: container.Register(); container.Register(); container.Verify(); return container; } private static void RunApplication(Container container) { try { var app = new App(); //app.InitializeComponent(); var mainWindow = container.GetInstance(); app.Run(mainWindow); } catch (Exception ex) { //Log the exception and exit } }
代码中的ViewModels已在Simple Injector中注册。
现在在MainWindow中,我想使用Material Design中的StaticResource。 这是我的代码:
错误出现在这一行:Style=\"{StaticResource MaterialDesignFloatingHintTextBox}\"
:
System.Windows.Markup.XamlParseException:\'System.Windows.StaticResourceExtension\'上的“提供值”引发了异常。\'行号“44”和行位置“21”。\'异常:找不到名为\'MaterialDesignFloatingHintTextBox\'的资源。 资源名称区分大小写。
此网页上有一个带有StaticResource的示例应用程序(我从此应用程序中获取了代码):
https://www.c-sharpcorner.com/article/wpf-application-with-googles-material-design/
它有效。 我唯一能看到的区别是我的应用程序具有Simple Injector,而样本应用程序不具有。
两个应用程序的参考资料都相同:
admin 更改状态以发布 2023年5月20日
您应该安装 MaterialDesignThemes
NuGet 包,并像 文档 中描述的那样将以下资源字典添加到您的 App.xaml
文件中:
这与您使用的任何IoC容器的simple injector无关。
您需要将资源导入到您的应用程序中才能使用它们。