在哪里放置资源

时间:2018-09-21 14:14:20

标签: wpf

在WPF应用程序中,我在Style中定义了一个App.xaml,并在其他页面上使用了它。但是我想将项目编译为.dll,这需要删除App.xaml。因此,我需要将Style放置在其他位置(最好放置在全局位置,而不是放置在我制作的每个页面中)。我可以在哪里放置它以及如何使用它?

顺便说一下,我正在使用MvvmCross,但是我认为这无关紧要。

2 个答案:

答案 0 :(得分:1)

基本上,您可以在任何适合的地方创建一个包含<ResourceDictionary>的新xaml,然后可以将这些资源字典加载到任何您想要的地方:

 <Page.Resources>
  <ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
      <ResourceDictionary Source="myresourcedictionary.xaml"/>
      <ResourceDictionary Source="myresourcedictionary2.xaml"/>
    </ResourceDictionary.MergedDictionaries>
  </ResourceDictionary>
</Page.Resources>

更多详细信息here

答案 1 :(得分:0)

对于全局声明,如果看到为App.Xaml生成的cs文件,则将看到类似于WindowsForm的Program.cs文件(与Form子类代码混合)。

这是此文件的一部分:(App.i.g.cs)

    public void InitializeComponent() {
        if (_contentLoaded) {
            return;
        }
        _contentLoaded = true;

        #line 7 "..\..\App.xaml"
        this.StartupUri = new System.Uri("MainWindow.xaml", System.UriKind.Relative);

        #line default
        #line hidden
        System.Uri resourceLocater = new System.Uri("/WpfPlayground;component/app.xaml", System.UriKind.Relative);

        #line 1 "..\..\App.xaml"
        System.Windows.Application.LoadComponent(this, resourceLocater);

        #line default
        #line hidden
    }

实际上,以下行将强制应用程序将您的特定resouceDictionary文件用作Global ResourceDictionary。

        System.Windows.Application.LoadComponent(this, resourceLocater);

如果您创建一个符合App.xaml文件的文件(您知道这是EXE文件的主要入口点),则不必依赖此文件。

注意::App.i.g.cs是自动生成的,您必须遵守App.XAML规则。