如何在Silverlight中正确组织XAML资源?

时间:2011-11-18 14:49:02

标签: silverlight xaml silverlight-4.0 resources

我的模块化应用程序中的资源文件存在一些问题。

我在此DLL中有Infrastructure.DLL和一些自定义控件。这些控件使用themes/generic.xaml中的模板 我有的问题 - Blend无法识别这些资源。视觉工作室。

理想情况下,我希望generic.xaml中的我的cusom控件的样式和公共库中其他控件的样式,我可以从我的模块中引用。

我还需要Expression Blend和VS才能正常工作。

如何安排解决方案以实现目标?

PS。重要! WPF不同,但我对Silverlight解决方案感兴趣

1 个答案:

答案 0 :(得分:4)

您只需要为generic.xaml创建设计时资源,以便让Blend重新认识它。看看this post

在每个模块中,您都可以创建一个ResourceDictionary

    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
        <ResourceDictionary.MergedDictionaries>
Source="/xxx.Silverlight.Controls;component/Themes/Generic.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>

此外,在.csproj文件中,您需要添加此文件。请注意,通常这段代码由Blend自动生成,因此如果您ResourceDictionary是自动生成的,则无需执行以下操作。

<Page Include="Design\DesignTimeResources.xaml" Condition="'$(DesignTime)'=='true' OR ('$(SolutionPath)'!='' AND Exists('$(SolutionPath)') AND '$(BuildingInsideVisualStudio)'!='true' AND '$(BuildingInsideExpressionBlend)'!='true')">
  <Generator>MSBuild:Compile</Generator>
  <SubType>Designer</SubType>
  <ContainsDesignTimeResources>true</ContainsDesignTimeResources>
</Page>

Design是我为存储DesignTimeResources.xaml而创建的文件夹。我几乎和你的结构相同。 :)