【问题标题】:How to change visibility using binding in WPF如何使用 WPF 中的绑定更改可见性
【发布时间】:2015-01-04 19:55:00
【问题描述】:

我正在使用 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 的新手..请帮助我..

【问题讨论】:

    标签: c# wpf mvvm


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 您好,感谢您的回复.. 但是当我再次单击菜单并重新初始化对象时 `WindowName = null; WindowName = new SalesEntry(); RaisePropertyChanged("WindowName");` 这样..我错了吗?
    • 您是否真的在某处创建了一个新的 SalesEntryViewModel 实例?看起来您在新窗口购买时使用的是相同的视图模型,而没有将可见性设置为可见。
    • 感谢 Shan 指出这一点,好点 T。如果他们正在绘制相同的视图模型(例如,视图模型实例在 app.xaml 或其他共享资源字典中声明),那么不管构造一个新对象,你肯定会得到这个结果。
    猜你喜欢
    • 2016-01-31
    • 1970-01-01
    • 2013-05-02
    • 2014-03-31
    • 2020-10-14
    • 1970-01-01
    • 2018-07-28
    • 1970-01-01
    • 2013-12-09
    相关资源
    最近更新 更多