根据类中属性的值,Adorner是否可能被隐藏/显示?
我应该为此使用附加的属性吗?
如果是这样,如何精确地控制Adorner的可见性;是否必须手动删除它/将其添加到依赖对象的OnChanged事件中的Adorner层?
这只是我想要做的事情的一个非常快速的代码表示:
(Note:我甚至不确定这是否是正确的做事方式。我希望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
}
}
}发布于 2011-09-18 17:19:09
如果我正确地理解了您的问题,那么在WPF中,您有两种方法可以通过代码或XAML来做到这一点。从代码中,您或多或少已经做了,在XAML中您可以这样做,我认为:
Visibility="{Binding Path=MyVisibilityVariant,
Converter={StaticResource VisibilityConverter}}换句话说,将其绑定到某个属性。我的一般建议是:在可能的时候使用XAML,考虑几个变体:
编辑
定义自定义Adorder以便能够在XAML中定义
https://stackoverflow.com/questions/7462855
复制相似问题