从WPF页面调用样式表

时间:2015-10-20 09:09:45

标签: c# wpf winforms stylesheet datatemplate

我有一个非常特殊的情况,说实话,我有点失落。我有一个从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的新手并且可以使用基础知识,但是我在这个问题上碰到了我的头。

感谢您的帮助。

1 个答案:

答案 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>