他のアセンブリからxamlのクラスを参照するのに問題があります。
同じソリューションで、2つのプロジェクトがあります。1つはControls(ユーザーコントロールを保持するため)と呼ばれ、もう1つはDataBinding(コンバーター/検証ルールを保持するため)と呼ばれます。コントロールで、xamlの検証ルールを参照しようとしています。
<Binding.ValidationRules>
<databind:Validators.FileExistsRule />
</Binding.ValidationRules>
私のプロジェクトは、私のクラスを含むプロジェクトを参照しています。Control.xamlの先頭にこの宣言を追加しました。
xmlns:databind="clr-namespace:GuiParts.DataBinding;assembly=DataBinding"
ただし、コンパイルすると、エラーが発生します。
The tag 'Validators.FileExistsRule' does not exist in XML namespace 'clr-namespace:GuiParts.DataBinding;assembly=DataBinding'.
クラスは間違いなく存在します。コードビハインドで問題なく呼び出すことができますが、xamlを介して呼び出すことはできません。クラスを同じプロジェクトに移動しても、問題はありません。私はここで他の質問を見て、以下を試しました:
- 関連するすべてのプロジェクトのクリーニングと再構築
- すべてのプロジェクトが同じバージョンの.Net(4.0、フルプロファイル)をターゲットにしていることを確認します
- 名前空間定義の最後から「アセンブリ」定義を削除します。
上記のどれもうまくいきませんでした。どこがうまくいかないかについての提案はありますか?
編集
私のFileExistsバリデーター:
namespace GuiParts.DataBinding.Validators
{
/// <summary>
/// Validates that the file with the specified name exists
/// </summary>
public class FileExistsRule : ValidationRule
{
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
ValidationResult res = null;
res = ( ! File.Exists((string)value))
? new ValidationResult(false, "File does not exist")
: new ValidationResult(true, null);
return res;
}
}
}
コードビハインドでエラーなしで次のように呼び出すことができます。
new GuiParts.DataBinding.Validators.FileExistsRule();
だから私は私の名前空間などを正しくしました。