2

我的 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>

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

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

4

2 回答 2

2

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

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

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

于 2012-05-30T21:21:07.870 回答
1

在完整的App.xaml 示例中,您希望使用“本地”资源。但是当你有“本地”资源并且你想合并一个资源目录时,系统税有点不同。

试试这样:

<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>
于 2012-05-31T07:09:17.937 回答