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