2017-06-15 7 views
0

ユーザーコントロールを作成し、そのプロパティに依存プロパティを作成しました。UWP XAMLユーザーコントロールの静的プロパティとインスタンスプロパティ

このUser Controlのインスタンスを2つ持ち、TestPropertyをインスタンスごとに異なる値に設定したいとします。

<widgets:mycontrol Test="val1"></widgets:WTComboBox> 
<widgets:mycontrol Test="val2"></widgets:WTComboBox> 

次のように私は、静的たDependencyPropertyとしてtestpropertyを作成する場合は、次のコントロールで

public static readonly DependencyProperty TestProperty= 
     DependencyProperty.Register("Test", typeof(string), typeof(mycontrol), null); 

を、その後、明らかに私は、各インスタンスで異なる値を持つことはできませんが、私はtestpropertyを作成するときに通常のインスタンスプロパティとして

public DependencyProperty TestProperty; 

public mycontrol() 
{ 
    TestProperty = DependencyProperty.Register("Test", typeof(string), typeof(mycontrol), null); 
} 

コントロールでは、デザイナーはプロパティが存在することを認識せず、エラーを作成しますが、実行時にはコントロールが完全に動作しますコントロールの各インスタンスは、テストプロパティの正しい値を持っています。

したがって、デザイナーでインスタンス依存プロパティを使用するにはどうすればよいですか?

おかげ

答えて

1

DependencyPropertyタイプ、ないインスタンスに登録されています。このコードを正しく書くと、登録されます。 Reference from here.

public static readonly DependencyProperty TestProperty= 
    DependencyProperty.Register("Test", typeof(string), typeof(mycontrol), null); 

次にあなたは、

を言った後、明らかに私は、これは真実ではありません各インスタンスに

をそれに異なる値を持つことはできません。

あなたはインスタンスごとに異なる値を持つことができ、イベントDependencyPropertyがこのように登録されているが、それはあなたが除外されているかもしれないもののように、唯一のタイプのすべてのインスタンスに対して1つの値を持つことができた静的プロパティではありません通常のCLRプロパティ依存関係プロパティとCLRプロパティの違いを理解するには、this answerを参照してください。

次に、依存性プロパティを定義します(デザイナーにこのプロパティを認識させる方法を尋ねます)。一見すると動作しても、静的でない依存関係プロパティを記述してはならない理由は、すでにsome answerです。

関連する問題