繁体   English   中英

使用媒体资源控制Adorner的可见性?

[英]Control an Adorner's visibility using a Property?

根据类中属性的值,是否可以隐藏/显示Adorner?

我是否应该为此使用附加属性?

如果是这样,如何精确控制Adorner的可见性; 我是否必须手动将其删除/将其添加到Dependency Object的OnChanged事件中的Adorner层中?

这只是我要执行的操作的非常快速的代码表示形式:

注意 :我什至不知道它的处理方式是否正确。我希望Adorner的可见性由我的业务模型中的代码修改的属性的值控制。Attached Properties的问题在于控件负责更新属性值而不是我的业务领域中的代码。)

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
        }
    }
}

好吧,如果我正确理解了您的问题,那么在WPF您可以通过两种方式(从代码或从XAML来做到这一点。 通过代码,您或多或少已经做到了,在XAML中,您可以执行以下操作,我认为:

Visibility="{Binding Path=MyVisibilityVariant, 
       Converter={StaticResource VisibilityConverter}}

换句话说,将其绑定到某些属性。 我的一般建议:考虑各种变体,请尽可能使用XAML:

  • XAML声明使该软件非常易于调用,但也更加复杂(考虑您或您的团队功能,最好是采用某种方式在背后的代码中进行操作,如果不仅有可用的解决方案)

  • 考虑到您的截止日期,导致XAML内容的实现/调试/修复会比代码花费更多的时间。

编辑

定义自定义Adorder以便能够在XAML中对其进行定义

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM