9

WPFでは、themesフォルダ内の別々のXAMLファイルにマークアップを保存し、MergedDictionariesを使用してgeneric.xaml:Silverlight 3のgeneric.xamlでMergedDictionariesを使用する

にインポートすることで、複数のユーザーコントロール用にXAMLを整理することができました
<ResourceDictionary> 
    <ResourceDictionary.MergedDictionaries> 
     <ResourceDictionary Source="MyFirstControl.xaml" /> 
     <ResourceDictionary Source="MySecondControl.xaml" /> 
    </ResourceDictionary.MergedDictionaries> 
</ResourceDictionary> 

統合された辞書サポートを導入したSilverlight 3ベータ版がリリースされて以来、Silverlightユーザーコントロールでも同様のことが可能なようでした。しかし、マージされた辞書ファイルのビルドアクションとgeneric.xamlのソースリファレンスの対応する構文のすべての組み合わせを試しても、私はそれを動作させるようには見えません。

他に誰が試しましたか?それが可能かどうか誰にも分かりますか?


OK - ので、多くのテストプロジェクトの後、WPFでの作業のサンプルを取得し、Silverlightの3にかけXAMLおよびC#のコードを移動し、それはまだ失敗し、私は完全なアンインストールを行なったし、ALLのSilverlight 2ビットの再インストールすべてのSilverlight 3ベータビットと最終的に仕事を得た。

私は何とかベータ版のインストールに失敗したとしか思えません。わかりませんが、明らかにバージョン3ランタイムがインストールされているにもかかわらずSilverlight 2ランタイムで実行していたようです。

おかげジャレド同じマシン上& 3のSilverlight 2を実行するための命令とバッチファイルを生成するためのAmy DullardShawn Wildermuthに...と感謝物事を見て取り、SL3チームとチェックします。

答えて

12

私は、ユーザーコントロールに次のように試してみました、それが働いた:

<UserControl.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="ResourcesA.xaml" /> 
      <ResourceDictionary Source="ResourcesB.xaml" /> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</UserControl.Resources> 
<StackPanel> 
    <Rectangle Width="100" Height="100" Fill="{StaticResource ResAColor}" /> 
    <Rectangle Width="100" Height="100" Fill="{StaticResource ResBColor}" /> 
</StackPanel> 

をしかし、あなたは、具体的generic.xaml言及。あなたはどんな問題を抱えていますか?リソースとしてコンパイルgeneric.xamlを使用して、使用して、私のために

作品: -

EDIT

追加のコメントに基づいて、私はSL3チームと話をして、次の答えを得ました完全なリソース構文。

<ResourceDictionary Source='/SilverlightClassLibrary1;component/CustomControl.xaml'/> 
generic.xamlで

うまく動作するはずですgeneric.xamlでソース(31783)が、非相対フォームの相対URIを使用して、ビルドを変更することができない上のバグがありますgeneric.xamlとCustomControl.xamlの両方のアクションがリソースになるようにします。まだ問題がある場合は教えてください。もしあなたがレプロを取得したら、それを見てみることができます。

これは役に立ちますか?

+0

SilverlightでMergedDictionariesがサポートされていなかったという印象を受けました。これはSL3の新機能ですか? – Rich

+0

はい、SL3を初めて使用しました。 –

+0

はい - 私はマージされたリソースを一般的に使用しても問題はありませんが、異なるusercontrolのスタイル/テンプレートに別々のxamlファイルを使用し、generic.xamlファイルのマージされた辞書としてまとめてみようとしています。 –

1

MySecondControl.xamlMyFirstControl.xamlのリソースを使用する場合、generic.xamlのResourceDictionaryに追加する順序は関係ありません。あなたはを重複してMySecondControl.xamlに含める必要があります。 MySecondControl.xamlが含まれている必要があります:私はちょうどこの問題を通じて働い

<ResourceDictionary.MergedDictionaries> 
    <ResourceDictionary Source='/MyControls;component/Themes/MyFirstControl.xaml'/> 
</ResourceDictionary.MergedDictionaries> 
<!-- ... Contents of MySecondControl.xaml --> 
0

。 ResourceDictionariesはMergedDictionariesをサポートしていますが、Generic.xaml、Genericを使用したカスタムテンプレートコントロール用です。xamlはMergedDictionariesをサポートしていません。したがって、2つの選択肢があります。(1)すべてのテンプレートをGeneric.xamlに積み重ねるか、 (2)YourOwnDictionary.xamlを作成し、すべての別々の辞書をYourOwnDictionary.xamlにマージし、UserControlsおよびページからYourOwnDictionary.xamlを参照します。これは、統合された辞書をサポートしていない以前のSilverlightバージョンの機能/バグのようです。

関連する問題