如何在 WPF 中使用绑定更改可见性

本文关键字:绑定 可见性 WPF | 更新日期: 2023-09-27 18:36:14

我正在使用MVVM Light WPF 4。

我的Home.xaml中有一个ContentPresenter。

<ContentPresenter Name="MDI" Content="{Binding WindowName, Mode=OneWay}">

我在视图模型中将用户控件绑定到此模型,例如

public UserControl WindowName { get; set; }
    void ShowSalesEntry()
    {
        WindowName = null;
        WindowName = new SalesEntry();
        RaisePropertyChanged("WindowName");
    }

通过在菜单中使用命令单击,它绑定良好。

现在在用户控件中,我有一个用于关闭的按钮(但要关闭,我会更改可见性折叠)通过这种方式..

Visibility="{Binding visibility, Mode=OneWay}"

在用户控件视图模型中,

public SalesEntryViewModel()
    {
        visibility = Visibility.Visible;            
        cmdExitWindow = new RelayCommand(ExitWindow);
        RaisePropertyChanged("visibility");
    }

和以下内容关闭(可见性到折叠)

public RelayCommand cmdExitWindow { get; set; }
    void ExitWindow()
    {
        visibility = Visibility.Hidden;
        RaisePropertyChanged("visibility");
    }

退出(表示可见性崩溃)。到目前为止,这工作正常。

问题是当我单击同一页面时,我的意思是显示相同的用户控件,现在这次可见性仍然崩溃。即使我更改为可见加载事件。

如何解决这个问题..我是MVVM WPF的新手。请帮助我..

如何在 WPF 中使用绑定更改可见性

问题是当我单击同一页面时,我的意思是显示相同的用户 控制,现在这次可见性仍然崩溃。即使 我在加载事件中更改为可见。

根据此注释和提供的代码,您要么省略了代码,要么混淆了构造函数的用途。

在构造函数中,您已将可见性设置为 Visible 。然后,您有一个将可见性设置为Hidden的方法,但是一旦发生这种情况,就无法将其设置回Visible。构造函数仅在创建对象时触发。您需要一些东西在适当的时间重新设置可见性(即您的评论"当我单击同一页面时")。

//Add these lines to the method/event that will show the control again
visibility = Visibility.Visible;
RaisePropertyChanged("visibility");

这是我根据您提供的内容可以给出的最佳答案。