0

すべてが同じ VS プロジェクト内で発生します。リソース ディクショナリ ファイルが単独で存在しています。プログラムでロードしようとすると、エラーが発生します

"不明な型 '{clr-namespace:MyAssembly.Helpers} IsNullConverter" を作成できません。

ロード方法は次のとおりです。

StreamResourceInfo stream = Application.GetResourceStream(new Uri(@"MyAssembly;component/Resources/Resources.xaml", UriKind.Relative));

this.dynamicResources = XamlReader.Load(stream.Stream) as ResourceDictionary;

リソース ディクショナリは次のとおりです。

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
                    xmlns:helpers="clr-namespace:MyAssembly.Helpers">

<helpers:IsNullConverter x:Key="IsNullConverter" />

Styles go here...

コード ビハインド ファイルに関連付けられていますが、何も含まれていないことに注意してください。リソース ファイルの Build-Action は "Resource" に設定されます。これは今朝から私を夢中にさせていますが、一体何が起こっているのかまだわかりません...

ヘルプ。ありがとうございました。

4

2 に答える 2

1

ハレルヤ 私はそれを理解しました。リソース ディクショナリを直接ロードするだけで済みました

Uri uri = new Uri(@MyAssembly;component/Resources/Resources.xaml", UriKind.Relative); this.dynamicResources.Source = uri;

そして、リソース ディクショナリ ファイルの Build Action が "Page" に設定されていることを確認します。

\m/

于 2012-09-25T14:24:47.740 に答える
0

アセンブリはプロジェクトで参照されていますか? 参照を追加しようとしない場合 - 依存関係が必要ない場合は、アセンブリをロードしてみてください:

http://www.dreamincode.net/forums/topic/78974-using-reflection-to-load-unreferenced-assemblies-at-runtime/

または、ax:Class 定義を resourcedictionary に追加し、xaml をロードする代わりにアセンブリからクラスをインスタンス化し、コンストラクターから生成された InitializeComponent() を呼び出すことを忘れないでください。

イベント処理のために WPF でリソース ディクショナリの背後にあるコードを設定することは可能ですか?

私が見る限り、 ResourceDictionary とコンバーターがロード元と同じアセンブリにある場合、あなたの例はうまく機能します:)

于 2012-09-24T20:05:29.047 に答える