从Prism模块访问主应用程序中定义的资源

时间:2011-04-05 15:13:21

标签: silverlight prism

在我的解决方案中,我有一个应用程序项目,它定义了所有资源 - 比如画笔和样式。我想在其他项目的视图中访问这些资源,这些项目是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模块化应用程序中定义资源的最佳方法是什么,以便可以在所有模块中访问它们而不会出现设计器错误?

4 个答案:

答案 0 :(得分:0)

我刚试过你的代码,它对我有用,你还有什么在棱镜控制中?

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

棱镜会为你照顾这个。只需在模块项目中引用Microsoft.Practices.Unity.Silverlight程序集即可。这为查找shell项目中定义的资源提供了设计时魔术。