Wpf Prism Mvvm Mef交互打开窗口新实例
我正在学习不同的棱镜功能,现在我被困在打开新窗口的过程中。 我的应用程序外壳有主区域和详细区域。 Shell的主区域具有DataGrid,其中的项在单击时在详细区域中显示其属性。 我需要的是一种在主区域双击项来创建窗口新实例的方法。 每个新窗口都可以保持活动状态,直到我关闭它,所以我可以通过单击主区域中的任何其他项目来打开其他窗口 在MVVM之前的Prism时代,我可能会这样做:Wpf Prism Mvvm Mef交互打开窗口新实例,wpf,mvvm,prism,mef,Wpf,Mvvm,Prism,Mef,我正在学习不同的棱镜功能,现在我被困在打开新窗口的过程中。 我的应用程序外壳有主区域和详细区域。 Shell的主区域具有DataGrid,其中的项在单击时在详细区域中显示其属性。 我需要的是一种在主区域双击项来创建窗口新实例的方法。 每个新窗口都可以保持活动状态,直到我关闭它,所以我可以通过单击主区域中的任何其他项目来打开其他窗口 在MVVM之前的Prism时代,我可能会这样做: ICollection<Window> MyWindows = new List<Wind
ICollection<Window> MyWindows = new List<Window>();
var wnd = MyWindows.SingleOrDefault(x => x.Name == id.ToString());
if (wnd == null)
{
wnd = new MyWindow(this, id);
MyWindows.Add(wnd);
}
wnd.Show();
ICollection MyWindows=new List();
var wnd=MyWindows.SingleOrDefault(x=>x.Name==id.ToString());
如果(wnd==null)
{
wnd=新的MyWindow(此,id);
MyWindows.Add(wnd);
}
wnd.Show();
但这是壳牌公司的ViewModel和Prism的禁区
从我的Shell xaml中使用了类似InteractionRequestTrigger的东西:
<prism:InteractionRequestTrigger SourceObject="{Binding CyberPopUpViewRequest, Mode=OneWay}">
<prism:PopupWindowAction>
<prism:PopupWindowAction.WindowContent>
<views:CyberPopUpView />
</prism:PopupWindowAction.WindowContent>
</prism:PopupWindowAction>
</prism:InteractionRequestTrigger>
但这只允许我创建一个窗口
但这是壳牌公司的ViewModel和Prism的禁区
如果将代码直接放在视图模型中,则为True。但如果您将其放入(读:hide)服务中(作为依赖项注入,在测试时可以替换为mock),则完全可以:
内部类窗口管理器:iWindows管理器
{
公共void CreateWindow(字符串id)
{
窗口wnd;
如果(!\u myWindows.TryGetValue(id,out-wnd))
{
wnd=新的MyWindow(Application.Current.MainWindow,id);
_myWindows[id]=wnd;
}
wnd.Show();
}
专用词典_myWindows=新词典();
}
但这是壳牌公司的ViewModel和Prism的禁区
如果将代码直接放在视图模型中,则为True。但如果您将其放入(读:hide)服务中(作为依赖项注入,在测试时可以替换为mock),则完全可以:
内部类窗口管理器:iWindows管理器
{
公共void CreateWindow(字符串id)
{
窗口wnd;
如果(!\u myWindows.TryGetValue(id,out-wnd))
{
wnd=新的MyWindow(Application.Current.MainWindow,id);
_myWindows[id]=wnd;
}
wnd.Show();
}
专用词典_myWindows=新词典();
}
谢谢,我会检查这一点,因为我没有想到要将窗口创建功能投入使用。我是否可能在新窗口的新布局中定义新的棱柱区域?我从未尝试过,但我想它可能会起作用。谢谢,我会检查这一点,因为我没有想到要将窗口创建投入使用。我是否可能在新窗口的新布局中定义新的棱镜区域?我从未尝试过,但我想它可能会起作用。