2

カスタムクラスを使用してWPFアプリで検証を実行し、ValidationRuleから継承するクラスを定義しました。このクラスには、実行時にAutoFacに挿入させたい依存関係がありますが、Visual Studio 2010 XAMLデザイナーが機能するには、パラメーターのないコンストラクターが必要です。

唯一の解決策は、依存関係のDependencyPropertyを作成し、それをXAMLでバインドすることですが、これは、依存関係がパブリックにアクセス可能で変更可能であることを意味します。どちらも必要ありません。

XAMLで使用する予定のクラスに依存関係を渡す方法はありますか?これは次のすべてを実行しますか?

  • デザイナーを壊さないでください。
  • 依存関係を非公開にします。
  • クラスを使用する前に、依存関係が設定されていることを確認してください。
4

2 に答える 2

2

どんだけやりたいの?

XAML 2009の機能は、役立つ次の要素を提供します。

  • x:Argumentsを使用すると、コンストラクターに引数を渡すことができます。この引数を何らかの方法でビュー モデルのプロパティにバインドできますか?

  • x:FactoryMethodを使用すると、オブジェクトを作成するメソッドを指定できます。これは、依存関係コンテナーにアクセスできるウィンドウまたはユーザーコントロールのメソッドである可能性があると思います。

しかし、ここに問題があります。XAML 2009 は、実行時に XAML リーダーを介してのみ読み込むことができ、コンパイルすることはできません。(「新しい 2009 XAML プリミティブが機能しないのはなぜですか? 」を参照してください)。

そのため、グローバルな静的オブジェクト (eurgh) は、依然として痛みの少ない解決策である可能性があります。


後で編集:私はあなたの質問を読み直し、「デザイナーを壊さない」を要件の1つとして入れていることに気付きました。これにより、可能な解決策から XAML 2009 が除外されます。

于 2011-12-19T02:40:41.023 に答える
-2

これは素晴らしい質問です。ここでデモンストレーションされたテクニックを使用して、デザイナーの作業を維持しました

機能し続けるだけでなく、この手法を使用してモックをデザイナーに入れることができます。とても便利な。

于 2011-12-19T04:29:44.700 に答える