我有一个非常特殊的情况,说实话,我有点失落。我有一个从Windows窗体应用程序中运行的WPF应用程序。为了运行它,我从我的WinForms代码创建MainWindow.xaml。 这意味着我的App.xaml永远不会被击中。
我已经尝试了在Application.xaml中使用样式表的所有各种方法,但因为没有运行,我想我需要从每个页面调用我的样式表(类似于web)。
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="TextStyle.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
这是我在网上看到这么多的代码,如果我从我的App.xaml调用它,它将在设计器中工作,但因为在运行时它从未命中,所以它不会工作。
我甚至尝试过从我的WPF应用程序中实例化App.xaml文件但是我不确定我是否搞砸了它或者它不起作用但是它不喜欢它
是否有类似的东西可以在WPF页面或窗口上调用?
对不起,我是WPF的新手并且可以使用基础知识,但是我在这个问题上碰到了我的头。
感谢您的帮助。
答案 0 :(得分:0)
在WinForm上托管WPF组件时,App.xaml不会运行。看一下 http://drwpf.com/blog/2007/10/05/managing-application-resources-when-wpf-is-hosted/有关如何管理托管WPF应用程序中的资源的几种方法。
在您的情况下,我认为问题在于您在Source属性中设置的方式,请尝试使用pack url,例如,
<Page.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/theNameOfTheResourceAssembly;component/resourceName.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Page.Resources>
资源也应格式化为:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="theNameOfTheResourceAssembly.resourceName">
...resource contents
</ResourceDictionary>