在Silverlight中管理资源的最佳想法是什么?

时间:2009-05-12 11:03:19

标签: asp.net silverlight resources

我需要创建我的silverlight框架,它具有以下有关资源的所有功能。

  1. 部分加载。因此,我无法使用示例资源文件(* .resx)。
  2. 强类型资源文件。因为它很容易调试。
  3. 使用示例文本编辑器轻松编辑。因为您无法在Web服务器中使用像visual studio这样的复杂编辑器。
  4. 轻松检测缺少的资源。
  5. 提示

    我的框架是基于Visual Studio Integration Package项目构建的。因此,我可以修改大多数Visual Studio功能,如编辑器,工具箱,菜单。

    更新#1

    如果不可能,那么,我将在Web服务器上创建一些资源编辑来管理这个资源。

    谢谢,

1 个答案:

答案 0 :(得分:1)

我不确定您要做什么,因为您的问题相当模糊,但我可以了解如何在Silverlight平台上管理资源。

Silverlight资源可以嵌入到任何XAML中,因为所有可视元素都有一个可以通过Resources属性访问的ResourceDictionary。

<Grid>
    <Grid.Resources>        

        <DataTemplate x:Key="MyTemplate">
        </DataTemplate>

    </Grid.Resources>
</Grid>

但是,最佳做法是使用名为“Resource Dictionaries”的特殊XAML文件。

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

    <DataTemplate x:Key="MyTemplate">
    </DataTemplate>

</ResourceDictionary>

Silverlight 3,能够自动将这些资源字典合并到应用程序的主资源字典中。

<Application.Resources>
    <ResourceDictionary>

        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Resources/A.xaml"/>
            <ResourceDictionary Source="Resources/B.xaml"/>
            <ResourceDictionary Source="Resources/C.xaml"/>
        <ResourceDictionary.MergedDictionaries>
    <ResourceDictionary>
<Application.Resources>

为了将资源字典与应用程序的资源合并,资源字典必须位于用于将Silverlight应用程序部署到客户端的压缩XAP包中。

但是,如果您愿意,可以将XAML资源备忘录存储在Web服务器上,并使用WebClient将其下载到Silverlight应用程序中,然后使用XamlReader从XAML字符串构建内存中的对象模型你从文件中检索。

资源字典本质上是强类型的,但不是类型安全的。在这种情况下,如果在XAML中有一个不正确的类型元素,则不会出现编译时错误。如果您的某个资源中出现错误,只有在初始化对它的引用并且渲染引擎尝试实例化您的资源时才会发现错误。

简而言之:

  1. 没有