1

カスタム コントロール、画像、スタイルなどを含む一連のカスタム アクティビティ デザイナーを開発しています。デザイナー XAML は、ライブラリ プロジェクト内の複数のサブディレクトリに分散しています ( WPF アプリケーションではないため、app.xaml は利用できません)。

通常の WPF アプリケーションの app.xaml のように、リソースを格納するための中心的な場所が必要です。

現在、次のようにprojectdir \Properties\lib.xaml ファイルを使用しています。

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

<ControlTemplate x:Key="TrafficLight">
 ...
</ControlTemplate>
</ResourceDictionary>

そして、次のようにすべてのデザイナー XAML からこれを参照します。

<sap:ActivityDesigner.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/ActDesLib;component/Properties/lib.xaml" />
        </ResourceDictionary.MergedDictionaries>

ここで、ActDesLibはアセンブリの名前です。

これは機能しますが、少し不器用に見えます。それを行うより良い方法はありますか?

個々の XAML ファイルに特別なマークアップを追加する必要なく、ライブラリ プロジェクトに自動的に含まれる "魔法の" app.xaml のようなファイルはありますか? これにより、複数の開発者が異なるデザイナーで作業している場合でも、一貫したスタイルを適用することが非常に簡単になります。

ところで: Source=".​​.." 属性で相対パスを使用しようとしました。VS2010 内のワークフローでアクティビティを使用すると、これは機能しませんでした。リソースが見つかりませんでした。アセンブリ名を含む絶対パスを使用すると、正常に機能します。しかし、VS2010 または再ホストされたデザイナーが、リソース ディクショナリ ファイルへのパスを、XAML 内の相対参照だけで自動的に見つける方法はありませんか?

4

0 に答える 0