是否可以根据类中属性的值隐藏/显示 Adorner?
我应该为此目的使用附加属性吗?
如果是这样,如何精确控制 Adorner 的可见性;我是否必须手动删除它/将其添加到依赖对象的 OnChanged 事件中的装饰层?
这只是我正在尝试做的一个非常快速的代码表示:
(注意:我什至不确定它是否是正确的做事方式。我希望 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
}
}
}