【问题标题】:Access resources defined in main application from Prism modules从 Prism 模块访问主应用程序中定义的资源
【发布时间】:2011-04-05 15:13:21
【问题描述】:

在我的解决方案中,我有一个应用程序项目,它定义了所有资源 - 例如画笔和样式。我想在其他项目的视图中访问这些资源,这些项目是 Prism 模块,它们在运行时得到解决。

例如,我在 Silverlight 应用程序的 App.xaml 中定义了以下内容:

<LinearGradientBrush x:Key="MyBrush" EndPoint="0.5,1" StartPoint="0.5,0">
  <GradientStop Color="#FFFFA700" Offset="0.482" />
  <GradientStop Color="#FFFF7600" Offset="0.864" />
  <GradientStop Color="#FFFFB400" Offset="0.169" />
</LinearGradientBrush>

现在,我想在这样的 Prism 模块中使用这个画笔:

<Border Background="{StaticResource MyBrush}"/>

请注意,这些模块是使用 XAML 模块目录解析的。上面的行在设计器中被标记为错误,尽管它在运行时得到了正确的解决。

在 silverlight 模块化应用程序中定义资源以便在所有模块中访问它们而不会出现设计错误的最佳方法是什么?

【问题讨论】:

    标签: silverlight prism


    【解决方案1】:

    我刚刚尝试了您的代码,它对我有用,您在棱镜控件中还有什么?

    【讨论】:

    • 正如我所提到的,它在运行时工作,但由于 StaticResource 在运行时被解析,设计者无法知道从哪里解析不同模块中的“MyBrush”。
    • Prism 本身就是这样做的。看我的回答。
    【解决方案2】:

    好吧,最后我不得不将所有资源移动到另一个程序集并在每个模块中引用该程序集。

    【讨论】:

      【解决方案3】:

      这是另一个使用条件构建的解决方案:Using Blend with Prism Apps in Silverlight

      【讨论】:

        【解决方案4】:

        Prism 会为您解决这个问题。只需在您的模块项目中引用 Microsoft.Practices.Unity.Silverlight 程序集。这提供了设计时的魔法来查找您的 shell 项目中定义的资源。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-06-27
          • 2017-11-15
          • 2015-07-17
          相关资源
          最近更新 更多