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 タグに追加する必要がありました。これでビルドされますが、スタイルを使用するボタンはスタイルを取得していません。実際、リソース ディクショナリで 2 つのスタイルの名前を持つスタイルが見つからないという JS エラーが発生しています。App.xaml にある場合は正常に機能しますが、別のリソース ディクショナリにある場合は機能しません。生成された DLL を反映し、DLL 内の styles/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>

これを実行して、resourcedict を 1 つのプロジェクトに保存し、それを他の各プロジェクトの app.xaml に追加して、それらをグローバルに利用できるようにする必要があります。現在、私はこの方法で同じソリューションで 20 のプロジェクトに約 6 つの Resource Dicts を実行しており、うまく機能しています。

于 2012-05-30T21:21:07.870 に答える
1

完全な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>
于 2012-05-31T07:09:17.937 に答える