【问题标题】:WPF Visibility on a user control isn't working - using Caliburn.Micro用户控件上的 WPF 可见性不起作用 - 使用 Caliburn.Micro
【发布时间】:2015-06-24 18:20:36
【问题描述】:

我有一个用户控件,它是一个旋转的“等待”图形。我已将其添加到表单中,并使用此 thread 中的代码在 Caliburn.Micro 中设置了一个约定@

然后我按照命名约定创建了一个属性,并相应地命名了这个用户控件:

<uc:LoadSpinner x:Name="Authenticating" />

我的财产如下所示:

        protected bool _authenticatingIsVisible = false;
        public bool AuthenticatingIsVisible
        {
            get { return _authenticatingIsVisible; }
            set
            {
                _authenticatingIsVisible = value;
                NotifyOfPropertyChange(() => AuthenticatingIsVisible);
            }
        }

我可以看到控件被绑定,当窗体启动时,微调器是不可见的。但是,当我将其设置为可见时,它仍然没有出现。为了简化事情并测试绑定,我在表单上创建了一个矩形并以相同的方式命名。它按预期出现/消失。所以它似乎是特定于用户控件或动画的东西。

我还尝试将用户控件包装在边框控件中并以相同的方式命名(想法是如果正常控件有效,则包含的用户控件应该在边框出现/消失时出现)。没有。

为什么这不起作用?

【问题讨论】:

  • 你不需要绑定到 Visibility.Visible/Collapsed/Hidden 而不是 true 或 false 吗?
  • 由于它可以与其他控件一起正常工作,因此它似乎可以正常工作。但是,我之前通过手动绑定和使用 BooleanToVisibility 转换器对此进行了测试,结果相同。
  • 您是否尝试过以可见的 Spinner 开始,以查看实际的 Spinner 是否有问题?

标签: wpf caliburn.micro


【解决方案1】:

Theodosius Von Richthofen 是正确的。您想使用可见性而不是布尔值。试试这个:

protected Visibility _authenticatingIsVisible = Visibility.Hidden;
    public Visibility AuthenticatingIsVisible
    {
        get { return _authenticatingIsVisible; }
        set
        {
            _authenticatingIsVisible = value;
            NotifyOfPropertyChange(() => AuthenticatingIsVisible);
        }
    }

【讨论】:

  • 你的 XAML 中绑定的控件有 Visibility 吗?
  • 它是通过约定代码绑定的(我知道它有效,因为我可以绑定其他普通控件并且它工作正常)。
猜你喜欢
  • 1970-01-01
  • 2018-04-23
  • 1970-01-01
  • 2012-03-10
  • 2016-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-17
相关资源
最近更新 更多