在我的Bootstrapper应用程序中,我使用自己的消息框。此消息框需要在dll
中显示的样式。对于其他观看次数(xaml
),会将其添加为ResourceDictionary
,如:
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/MyApp;component/MyStyle.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
或者通常任何C#
应用程序都有app.xaml
,其中可以添加此样式并且它可以正常工作。对于Bootstrapper,我无法添加app.xaml
或提供此ResourceDictionary
。任何指针?
答案 0 :(得分:0)
在能够将资源字典添加到应用程序资源之前,您需要做两件事。由于本机Bootstrapper托管我们的WPF窗口,因此没有自动设置应用程序。只需创建System.Windows.Application
的实例即可完成此操作。其次,你必须设置Application.ResourceAssembly
。完成这两个步骤后,您可以使用Application.Current.Resources
访问应用程序资源。为了完整性,请使用完整的代码示例:
public class CustomBootstrapper : BootstrapperApplication
{
protected override void Run()
{
if (Application.Current == null)
{
new Application();
}
if (Application.ResourceAssembly == null)
{
var assembly = typeof(CustomBootstrapper).Assembly;
Application.ResourceAssembly = assembly;
}
var myStyle = (ResourceDictionary)Application.LoadComponent(new Uri("/styling/MyStyle.xaml", UriKind.Relative));
Application.Current.Resources.MergedDictionaries.Add(myStyle);
var view = new MainWindow();
view.Show();
}
}
我希望这能回答你的问题