根据类中某个属性的值,是否可以隐藏/显示一个Adorner?使用属性控制装饰者的可见性?
我应该为此使用附加属性吗?
如果是这样,Adorner的可见度究竟如何控制;是否必须手动删除它/将它添加到Dependency Object的OnChanged事件中的Adorner Layer?
这只是我想要做一个非常快速的代码表示:
(注意:我甚至不知道它做事的正确方法我想装饰器的知名度。由我的业务模型中的代码修改的属性的值来控制。附加属性的问题是控件的责任是更新属性的值而不是业务域中的代码。)
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
}
}
}
可以提供一些代码吗? – Tigran
在帖子中添加了一个快速代码示例。我只是想出了它,但它应该给出我想要做的事情的一个概念。 –