2011-12-29 16 views
5

ビジュアル要素を持たないシンプルなユーティリティクラスを作成してXAMLで作成したいので、データバインディングを定義できます。私はDependencyObjectから派生したクラスを作成し、それをWindow.Resourcesセクションに作成しようとしましたが、コンストラクタは呼び出されません。XAMLでクラスのインスタンスを作成する方法は?

+0

この問題の回避策が見つかったので、メインフォームコンストラクタに 'FindResource(" myClass ");を配置しました。 – Poma

+0

素敵な小さなハック:) – BigL

答えて

1

実際にインスタンスを使用するとインスタンスが作成されているように見えます。私はこの問題のための汚い回避策を見つけました - FindResource("myClass");をメインフォームのコンストラクタに配置すること。

4

あなたはそれがインテリセンスができます簡単です

xmlns:yourNamespace="clr-namespace...." 

でそれにあなたの名前空間を追加し、app.xamlであなたのクラスをインスタンス化することができます。

そしてApplication.Resourcesで、あなたのクラス、私はこれがあなたの役に立てば幸い

<Application.Resources> 
    <yourNamespace:YourClass x:Key="yourClassInstanteName" />  
</Application.Resources> 

を作成します。

+0

私はそれをしました。問題は、クラスインスタンスが実行時に作成されないことです(コンストラクタでブレークポイントを削除しようとする)。 – Poma

+3

実際に*使用するときにインスタンスが作成されるように見える – Poma

+0

はい、バインディングがインスタンス化するように使用しています – BigL

0

私は古い質問に投稿していることを知っていますが、私は自分自身で答えを見つけようとしている間にこれを見つけました。大きなLが掲載コードは確かに正しかった:

xmlns:yourNamespace="clr-namespace...." 

置き、アプリケーションリソースのコピー:

<Application.Resources> 
    <yourNamespace:YourClass x:Key="yourClassInstanteName" />  
</Application.Resources> 

この情報への追加のキーは、クラスがデフォルトのコンストラクタを持つ必要があるということです。クラスソースでは、次のようなメソッドが必要です:

関連する問題