2

設計時に Prism Regions を表示できるカスタム アセンブリをコーディングしました。

私のアセンブリが行うことの 1 つは、スタートアップ プロジェクトからアセンブリを読み込むことです。(Prismのモジュールカタログを使用。)

シンプルなアプリの場合、うまく機能します。

しかし、実際のアプリに入れようとすると、設計時のビューが壊れます (実行時は正常に動作します)。

プロジェクトで使用する ResourceDictionary を含むファイルが見つからないというメッセージが表示されます。
また、その ResourceDictionary によって使用されるアセンブリの 1 つが見つからないことも示しています。

私の推測では、スタートアップの場所からアセンブリをプルすると、この問題が発生します。

しかし、次の理由により、これは私には意味がありません。

  1. ResourceDictionary は、次のようにビューに読み込まれます。

    <UserControl.Resources>
      <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/DataProviders.xaml"/>
        </ResourceDictionary.MergedDictionaries>
      ...
    

    ただし、それをロードするファイルは出力に含まれません。したがって、dll にコンパイルする必要があります。
    それは私がこれがうまくいくはずだと思うように導きます:

    <ResourceDictionary Source="/MyProj;component/DataProviders.xaml" />
    

    しかし、それもうまくいきません。(スラッシュありとなしで試しました。)

  2. 場所の問題である場合 (出力場所 (bin\debug) ではなく開始プロジェクトから読み込んでいるため、欠落していると思われる他のアセンブリが見つからないのはなぜですか?
    .
    そのアセンブリは出力に含まれています)両方のプロジェクト (スタートアップと問題のプロジェクト) のフォルダー。

  3. それが場所だと考えて、ソースで絶対パスを試しました。このような:

    <ResourceDictionary Source="C:/src/solution/Regns/MyProj/DataProviders.xaml"/>
    

    それもうまくいきませんでした。(リソースファイルが見つからないと言われました。)

これについて考えてみると、私は ResourceDictionarys がどのように機能するかについて十分に理解していないと判断しました。

ResourceDictionary がロードされない理由を教えてください。

4

2 に答える 2

2

アプリケーションには「中央」ResourceDictionaryがあり、 からアクセスできますApplication.Current.Resources。他のアセンブリからロードする追加のリソースがある場合は、アプリケーションの起動時に、外部アセンブリのすべての辞書をアプリケーションのメイン リソース ディクショナリとマージし、Application.Current.Resourcesプロパティをそのマージされたディクショナリのセットに設定する必要があります。

役立つかもしれないコード プロジェクトでこのリンクを見つけました: http://www.codeproject.com/Articles/35346/Using-a-Resource-Dictionary-in-WPF

于 2012-06-08T17:33:33.940 に答える
0

実行時にリソース ディクショナリを読み込もうとしているようです。あなたの質問に答えると思う投稿があります:

実行時に DictionaryStyle.xaml ファイルを読み込む方法は?

于 2012-06-08T17:35:25.290 に答える