0

同じプロジェクトに含まれるコンバーターを使用する XAML UserControl があります。

xmlns:filter="clr-namespace:SampleModuleFilter" - namespace definition

ここまでは順調ですね。ただし、コンバーターを別のアセンブリに移動し、それに応じて名前空間と参照を調整すると、次の例外が発生します。または操作が実装されていません。」これは奇妙です。別のライブラリに移動した後の名前空間は次のようになります。

xmlns:filter="clr-namespace:SampleLibrary.Converters;assembly=SampleLibrary"

コンバーター リソースの定義は次のとおりです。

<filter:BoolToVisibilityConverter x:Key="boolToVisibilityConverter" />

そして私はそれを次のように使用します:

Visibility="{Binding DisplayLabel, Converter={StaticResource ResourceKey=boolToVisibilityConverter}}"

IntelliSense は明らかにライブラリを認識できます。これは正常に動作するためです (名前空間プレフィックスを記述した後にコンバーター クラスを提供します)。

問題が何であるかについてのアイデアはありますか?

4

4 に答える 4

1

代わりに:

 xmlns:filter="clr-namespace:SampleModuleFilter"

アセンブリも参照する

 xmlns:filter="clr-namespace:SampleModuleFilter;assembly=SampleModuleFilterAssemblyName"

これでうまくいくはずです。

于 2014-07-30T14:15:14.400 に答える
1

コード ビハインド ファイルでもアセンブリを参照する必要があります。

XAML 部分でのみアセンブリを参照すると、コンパイラは "xxx.dll の読み込みに失敗しました" という例外を返します。

また、接続されたアセンブリを直接呼び出して、次のようにする必要があります。

var dummy = new MyExternalAssemby.MyType();

またはこれだけを新しいコード行で

new MyExternalAssemby.MyType();

結果をダミー変数に入れずに。

通常、静的コンストラクターでそれを行います。XAML はコンパイルされておらず、BAML (バイナリ XAML) で "変換" されているだけなので、これは XAML インタープリターのバグだと思います。そのため、コード ビハインドで「ハード」参照を作成せずに XAML で型を参照すると、NET リンカーはそれをまったく無視します。

HTHロレンゾ

于 2014-02-06T18:36:39.980 に答える
0

それ、変だよ; コンバーターはすべて中央ライブラリーにあり、正常に動作します。参照と名前空間が正しいと仮定すると、私が提案できる唯一のことは、問題の2つのプロジェクトをクリーンアップして再構築することです。

于 2012-04-13T14:09:14.960 に答える
0

「SampleLibrary.dll」はコードのどこかで使用されていますか?

xamlファイルでのみ使用される参照アセンブリがコンパイル時にスキップされ、dllの依存関係に表示されないという奇妙なバグが発生しました。

于 2012-04-13T14:10:26.270 に答える