0
我有一个使用PRISM的WPF应用程序。该应用程序分为两部分。左侧窗格是一个菜单窗格,右侧窗格是详细信息窗格。我在容器窗格中也有一个工具栏,这是一个用户控件。如何在调用工具栏项目时替换细节视图?
现在,我希望当我单击工具栏选项时,我应该能够用新的用户控件/窗口替换右窗格(详细信息窗格)。我怎样才能做到这一点?目前,我在工具栏中有以下代码编辑按钮,它会打开一个新窗口我不想要一个新窗口我想替换右窗格窗口(详细信息)窗口。
private void EditButtonClick(object sender, RoutedEventArgs e)
{
Window userEditWindow = new Window
{
Title = "User Edit",
Content = new UserEdit(),
Width = 600,
Height = 600
};
userEditWindow.Show();
}
下面是用户界面的样子:
_______________________________________________________________________
PRISM shell container begins
________________________________________________________________________
| User control containing toolbar (edit, new, update, delete)
menu user control |____________________________________________________
|details pane user control
|
|
__________________________________________________________________ |_______________________________________________________________
PRISM shell container ends
_________________________________________________________________________
上面可以看到我的应用程序的布局!正如你可以看到一切都在PRISM外壳容器内。我正在处理usercontrol工具栏后面代码中用户控件工具栏中的事件,如上所示。我想要的是当单击工具栏时替换细节窗格。但我不知道该怎么做?
我会用一个消息系统(PRISM的'EventAggregator')以广播ChangeContentView消息,并有我的ViewModel订阅接收该类型的消息并更改“内容”窗格中显示的项目。如果你有兴趣,我甚至可以为PRISM的'EventAggregator'编写一个帮手包装器,它可以简化它在广播和订阅邮件时的使用方式[在我的博客上](http://rachel53461.wordpress.com/2011/10/09/ simplations-prisms-eventaggregator /) – Rachel
谢谢@Rachel,但看起来非常复杂。我想要的是以某种方式用新窗口替换细节窗格。有没有其他方法? –
假设您的详细信息窗格使用“ContentControl”显示,您可以将ContentControl.Content设置为您尝试显示的任何UserControl。如果需要,我在这种导航风格的另一个答案[这里](http://stackoverflow.com/a/12216068/302677)中有一个例子。也不要害怕PRISM的'EventAggregator'。这实际上并不那么复杂,尤其是使用该辅助包装器,如果你使用MVVM模式,它会让你的生活变得更容易:) – Rachel