gpt4 book ai didi

c# - WPF Prism - 将资源放在哪里?

转载 作者:可可西里 更新时间:2023-11-01 03:04:50 25 4
gpt4 key购买 nike

我有一个 Prism 应用程序和各种模块。我想知道查找样式、画笔、控件模板、数据模板等资源的最佳位置在哪里?

我应该制作一个资源字典并将所有内容放在那里吗?每个模块应该有自己的资源吗?还是每个 View ?我想遵循 Prism 的目标,即保持一切模块化,但我也看不到在每个模块中重新声明相同资源的意义...

最佳答案

我用 Prism 开发应用程序,我使用的技术非常接近 Prism 手册中描述的技术。有一个 YourApplication.Infrastructure 项目,您通常会在其中放置所有共享接口(interface)等。因此:

  1. 我只是添加项目 YourApplication.Resources
  2. 在那里创建文件夹 Themes
  3. 在 Themes 文件夹中为每组资源创建单独的 xaml 文件(例如用于标准 WPF 控件样式的 Generic.WPF.xaml,用于画笔等的 Generic.Brushes.xaml)
  4. 创建文件Themes\Generic.xaml(就是这个名字,以后会有很大的好处),内容如下

    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <ResourceDictionary.MergedDictionaries>

    <ResourceDictionary Source="Generic.Brushes.xaml"/>
    <ResourceDictionary Source="Generic.WPF.xaml"/>

    </ResourceDictionary.MergedDictionaries>

    </ResourceDictionary>
  5. 现在您可以在任何模块中添加这些资源(您有单独的项目,对吗?),方法是将对 YourApplication.Resources 的引用添加到该项目并添加到 View 的 xaml 中:

    <UserControl.Resources>
    <ResourceDictionary>

    <ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="pack://application:,,,/YourApplication.Resources;component/Themes/Generic.xaml"/>
    </ResourceDictionary.MergedDictionaries>

    <!-- Put your not shared resource here -->

    </ResourceDictionary>
    </UserControl.Resources>

我不知道,也许这种方式有一些问题,但它有效,而且对我来说效果很好。如果有人能以这种方式发表评论(优点/缺点)- 我会很高兴听到它!

关于c# - WPF Prism - 将资源放在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8594178/

25 4 0