【问题标题】:C#: Caliburn Micro: How do I control the properties of a WPF Button using data binding?C#:Caliburn Micro:如何使用数据绑定控制 WPF 按钮的属性?
【发布时间】:2020-12-24 16:35:14
【问题描述】:

当用户按下按钮时,我希望该按钮消失并由确认按钮代替。下面的代码是我认为会使按钮消失的代码,但是当我单击按钮时,什么也没有发生。 DeleteButton() 方法使用 Caliburn Micro 约定正确连接到 XAML。如何从 ViewModel 控制按钮的可见性或任何其他属性?谢谢。

XAML:

<Button x:Name="DeleteButton" Visibility="{Binding DeleteButtonVisibility}"/>

视图模型:

    bool _deleteButtonVisibility = true;

    public bool DeleteButtonVisibility
    {
        get { return _deleteButtonVisibility; }
        set
        {
            _deleteButtonVisibility = value;
            NotifyOfPropertyChange(() => DeleteButtonVisibility);
        }
    }

    public void DeleteButton()
    {
        DeleteButtonVisibility = false;
    }

【问题讨论】:

  • 您的绑定似乎很好,除了 Visibility 的特殊情况始终需要从 bool 到 Visibility 枚举的转换器,但对于其他属性,这很好。

标签: c# wpf caliburn.micro


【解决方案1】:

可见性不是布尔值,它是System.Windows.Visibility

试试这个:

    Visibility _deleteButtonVisibility = Visibility.Visible;

    public Visibility DeleteButtonVisibility
    {
        get { return _deleteButtonVisibility; }
        set
        {
            _deleteButtonVisibility = value;
            NotifyOfPropertyChange(() => DeleteButtonVisibility);
        }
    }

    public void DeleteButton()
    {
        DeleteButtonVisibility = Visibility.Collapsed;
    }

【讨论】:

  • 太好了,谢谢!我打算使用 Visibility.Hidden。是否有充分的理由使用 Visibility.Collapsed?有什么区别?
  • 您可以在这里查看:docs.microsoft.com/en-us/dotnet/api/…。本质上折叠意味着可以在隐藏按钮上绘制其他组件,而不是在视图中保留空间。隐藏只会显示隐藏按钮所在的空白区域。正如您打算更换按钮一样,Collapsed 似乎更合适。
猜你喜欢
  • 1970-01-01
  • 2018-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-15
  • 2016-06-27
相关资源
最近更新 更多