如何在 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的新手。请帮助我..
问题是当我单击同一页面时,我的意思是显示相同的用户 控制,现在这次可见性仍然崩溃。即使 我在加载事件中更改为可见。
根据此注释和提供的代码,您要么省略了代码,要么混淆了构造函数的用途。
在构造函数中,您已将可见性设置为 Visible
。然后,您有一个将可见性设置为Hidden
的方法,但是一旦发生这种情况,就无法将其设置回Visible
。构造函数仅在创建对象时触发。您需要一些东西在适当的时间重新设置可见性(即您的评论"当我单击同一页面时")。
//Add these lines to the method/event that will show the control again
visibility = Visibility.Visible;
RaisePropertyChanged("visibility");
这是我根据您提供的内容可以给出的最佳答案。