クラスのプロパティの値に応じて、Adorner を非表示/表示することはできますか?
この目的のために添付プロパティを使用する必要がありますか?
もしそうなら、アドナーの可視性をどのように正確に制御できますか。手動で削除/依存オブジェクトの OnChanged イベント内の Adorner Layer に追加する必要がありますか?
これは、私がやろうとしていることの非常に簡単なコード表現です:
(注: それが正しい方法であるかどうかさえわかりません。ビジネス モデルのコードによって変更されるプロパティの値によって Adorner の可視性を制御したいと考えています。添付プロパティの問題は、ビジネス ドメインのコードではなく、プロパティの値を更新するのはコントロールの責任です。)
public static class IsValidBehavior
{
public static readonly DependencyProperty IsValidProperty = DependencyProperty.RegisterAttached("IsValid",
typeof(bool),
typeof(IsValidBehavior),
new UIPropertyMetadata(false, OnIsValidChanged));
public static bool GetIsValid(DependencyObject obj)
{
return (bool)obj.GetValue(IsValidProperty);
}
public static void SetIsValid(DependencyObject obj, bool value)
{
obj.SetValue(IsValidProperty, value);
}
private static void OnIsValidChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs e)
{
UIElement element = dependencyObject as UIElement;
if (element == null)
return;
if ((bool)e.NewValue == true)
{
// Display the Adorner
}
else
{
// Hide the Adorner
}
}
}