5

アプリケーションに含める共通のスタイルとリソースのセットをそれぞれ提供する 2 つのアセンブリがあります。App.xamlそれらをロードするためにマージされた辞書を使用していますが、実行時には問題ありませんでした。残念ながら、これらのリソースは設計時に読み込まれず、解決できないリソースに関するメッセージで [エラー] ウィンドウがいっぱいになり、実際に表示されるものを表していない UI が表示されます。

これは、現在の私の App.xaml です。

<Application x:Class="ClientDebug.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             >
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/Dai.Common;component/Xaml/Common.xaml" />
                <ResourceDictionary Source="/Dai.DevExpress;component/Xaml/Styles.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>

これらのマージされた辞書の両方で、[エラー] ウィンドウに次のエラーが表示されます。

Error   11  An error occurred while finding the resource dictionary "/Dai.Common;component/Xaml/Common.xaml".   C:\DevProjects\Core Application\ClientDebug\App.xaml    12  17  ClientDebug
Error   12  An error occurred while finding the resource dictionary "/Dai.DevExpress;component/Xaml/Styles.xaml".   C:\DevProjects\Core Application\ClientDebug\App.xaml    13  17  ClientDebug

これは明らかに役立つ情報が不足しています。繰り返しになりますが、これらは実行時に期待どおりにロードされますが、設計時に使用できるリソースはありません。

4

4 に答える 4

1

数日前から、新しい WPF プロジェクトを開始したり、古いプロジェクトで作業したりするたびに、これを使用しています。私はそれについて助けを求める質問を始めましたが、テストで消えてしまいました。Visual Studio はあまり安定していないようです。

問題の核心は、Xaml デザイナーが、アプリケーション プロジェクトのみからソリューション内の他のプロジェクトへの参照を作成できないことです。回避策は、すべてをライブラリに移動し、アプリケーションにコードで制御を渡すだけのことをさせることです。エレガントではなく、App.Xaml を失うことは非常に困難ですが、Visual Studio が魔法のようにすべてを理解するのを待つよりはずっとましです。

于 2012-12-16T02:26:49.347 に答える
0

私のプロジェクトで同様のマージを試みましたが、完全に機能しているようです。(または、私がずっと前に設定した可能性のある私の設定があれば許してください..)私が尋ねることができる唯一の質問は、xamlが親プロジェクト内の何かを参照しているかどうかです? 親プロジェクトへの参照もあると仮定しています(クロスチェックのみ)。おそらく、xaml ファイルには別の xaml ファイル (コントロール、色、フォントなど) も必要です。(私が試したマージは MahApps からのものです。)

  <Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colours.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Blue.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseDark.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
  </Application.Resources>
于 2012-09-24T09:05:58.753 に答える
0

次のように、他の名前空間の辞書の前に「pack://application:,,,」を付けます。

        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/Wsi.Util;component/DataGrid/NameValueDataGridDictionary.xaml" />
            <ResourceDictionary Source="LayoutStylesDictionary.xaml" />
            <ResourceDictionary Source="pack://application:,,,/Wsi.Util;component/controls/ToolBarResources.xaml" />
            <ResourceDictionary Source="pack://application:,,,/Wsi.Common;component/view/themes/FilterStylesResourceDictionary.xaml" />
        </ResourceDictionary.MergedDictionaries>

HTH、

ジャネン

于 2012-09-17T18:37:45.680 に答える
0

参照プロジェクトに署名することで、この問題を修正しました。

問題は次のとおりです。私のプロジェクトはキー ファイルで署名されていましたが、参照されているプロジェクトはそうではありませんでした。

解決するには:

  • プロジェクトをソリューションにロードする
  • プロジェクトのプロパティを開きました
  • 「署名」に移動します
  • 「アセンブリに署名する」をクリックします
  • コンボボックスから「<New...>」を選択
  • 名前を入力してください。'keyfile' ('キーファイルをパスワードで保護する' はオプションです)
  • ソリューションの再構築
于 2013-02-13T16:35:30.043 に答える