在 Silverlight 5 中合并的资源字典中使用样式



我的app.xaml中有一堆样式,它们在我的SL5应用程序中的页面中都得到了很好的使用。我想将这些样式移动到多个资源字典中,以使其更易于管理和使用。

首先,我将样式复制到项目中/Styles/ButtonStyles.xaml 页面中的新资源字典中......代码段如下所示:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Style x:Key="RegistrationsRolloverImage" TargetType="Button">
    <Setter Property="Template">...</Setter>
  </Style>
  <Style x:Key="FinancialLedgerRolloverImage" TargetType="Button">
    <Setter Property="Template">...</Setter>
  </Style>
</ResourceDictionary>

接下来,我将以下内容添加到我的 App.xaml 中:

<ResourceDictionary x:Key="MergedStyles">
  <ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="Styles/ButtonStyles.xaml" />
  </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

它迫使我在 ResourceDictionary 标签中添加一个 x:key,因为我不断收到构建错误。现在它构建了,但使用该样式的按钮无法获得样式。实际上,我收到一个JS错误,它在我的资源字典中找不到具有两种样式名称的样式。如果它们在 App.xaml 中,它们就可以正常工作,但如果它们在单独的资源字典中,则不能正常工作。我反映了生成的DLL,并且可以在DLL中看到styles/buttonstyles.xaml。

不知所措...并且无法弄清楚出了什么问题。想法?

它们在同一个项目中吗?在您的 app.xaml 中尝试更多类似的东西;

<Application.Resources>
   <ResourceDictionary>
      <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="/YourResDictionaryContaining.Proj.Name;component/Styles/ButtonStyles.xaml" />
      </ResourceDictionary.MergedDictionaries>
   </ResourceDictionary>
</Application.Resources>

我必须这样做才能将资源字典合并到一个项目中,然后将其添加到每个其他项目的 app.xaml 中,使它们全局可用。目前,我以这种方式在相同的解决方案中运行大约 6 个资源字典 acros 20 个项目,效果很好。

在完整的 App.xaml 示例中,需要使用"本地"资源。但是当你有"本地"资源并且你想合并一个资源目录时,systax 会有所不同。

像这样尝试:

<Application ...>
  <Application.Resources>
    <ResourceDictionary>
      <vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" />
      <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="Styles/ButtonStyles.xaml" />
      </ResourceDictionary.MergedDictionaries>
      <Style x:Key="BaseTextBlock" TargetType="TextBlock">
         ...
      </Style>
    </ResourceDictionary>
  </Application.Resources>
</Application>

相关内容

  • 没有找到相关文章

最新更新