私はそのテストコードでカスタムコントロールを持っています。それから私はパネル上にコントロールを置いて、プレビューデザイナーにそれを見てください。次に、xamlでコントロールが定義されている場所に移動し、IsMouseOverと入力し始めますが、このDepは見つかりません。プロパティ、なぜですか?私はSETTTERを提供したくないですが、GETTERでコントロールにバインドするコントロールのユーザーに提供したいと思います。読み取り専用が表示されません。XAMLの依存関係のプロパティ
どうしますか?
// Register the private key to set the value
private static readonly DependencyPropertyKey IsMouseOverTestPropertyKey =
DependencyProperty.RegisterReadOnly("IsMouseOverTest",
typeof(bool), typeof(ElementTextBox),
new FrameworkPropertyMetadata(false));
// Register the public property to get the value
public static readonly DependencyProperty IsMouseOverTestProperty =
IsMouseOverTestPropertyKey.DependencyProperty;
// .NET Property wrapper
public bool IsMouseOverTest
{
get { return (bool)GetValue(IsMouseOverTestProperty); }
private set { SetValue(IsMouseOverTestPropertyKey, value); }
}
使用例:ユーザーがOKボタンを押した後、バインドされたViewModelでSomeBooleanPropertyからバウンド値を取得します。なぜそれはできないのですか? SETTERを私のユーザに提供すると、そこにはいけないものを設定することができます。 – msfanboy
Intellisenseはあなたが期待するものを正確に実行します - プロパティを設定することはできません(プロパティのバインディングの設定もプロパティの設定です)。別のことは、依存関係プロパティを宣言することによって、自動的にそれを設定できることです。ゲッターとセッターは便利のためだけにあります。ユーザーは、この方法で依存関係プロパティを設定できます。MyTextBox.SetValue(MyTextBox.IsMouseOverTestProperty、true) –
私は今、混乱しています...シンプルで短くするために:自分のDPのために宣言されたセッターを持っていると仮定します。このSETTERを使用して設定できるすべての値を削除/消去するにはどうすればよいですか?だから、ユーザーは私の恋人/ロジックを壊さないのですか? – msfanboy