C# 将参数传递到Prism弹出窗口的正确方法
我正在WPF应用程序中使用Prism 6C# 将参数传递到Prism弹出窗口的正确方法,c#,wpf,prism,C#,Wpf,Prism,我正在WPF应用程序中使用Prism 6 我正在使用来自的区域popubehavior 但是,每当显示此弹出窗口时,似乎无法向视图传递参数。 -未调用INavigationAware.on导航到。 -如果视图不知道它所在的I区域的名称(据我所知),就无法获取视图的区域参数 命令向新视图提供参数的正确方式是什么 编辑: 我想能够显示从代码中的命令弹出窗口。 代码可能没有实际视图类的作用域,只有它的名称。如果您想使用Prism 6,您确实需要引用不到4年的示例,并且可能无法很好地使用最新的位 你可以
我正在使用来自的
区域popubehavior
但是,每当显示此弹出窗口时,似乎无法向视图传递参数。
-未调用INavigationAware.on导航到。
-如果视图不知道它所在的I区域的名称(据我所知),就无法获取视图的区域参数
命令向新视图提供参数的正确方式是什么
编辑:
我想能够显示从代码中的命令弹出窗口。
代码可能没有实际视图类的作用域,只有它的名称。如果您想使用Prism 6,您确实需要引用不到4年的示例,并且可能无法很好地使用最新的位
你可以找到更多最近的例子
具体地说,您将希望查看交互示例,如果页面位于底部,请查看。这就是您现在用来管理确认、通知和其他交互(从最终用户获取输入)的弹出窗口的方法。这个例子也许正是你需要的。您可以使用它向交互传递信息,并从交互中获取信息
我有时使用这些来显示最终用户的小编辑交互。我传递了我希望他们编辑的对象,当他们单击“确定”并采取操作(更新/保存)时,我会返回更改的对象
我希望这对您有所帮助。类通知有一个属性Content,对象类型。所以您可以将任何类型参数传递给弹出窗口。例如,在MainViewModel中:
using Prism.Interactivity.InteractionRequest;
using Prism.Commands;
public InteractionRequest<IConfirmation> ConfirmInPopup { get; private set; }
//code
ConfirmInPopup.Raise(new Confirmation() {
Title = "Confirm",
Content = new MedInModel
{
MedOnlyCode = med.MedOnlyCode,
MedName = med.MedName,
MedNowAmt=10,
BoxId=med.BoxId
}
},t =>
if (t.Confirmed)
{
}
);
现在从Notification属性获取参数。解决方案是在调用新窗口时不调用ShowDialog(),而只调用Show()方法。然后,这与OnNavigatedTo一起工作。因为调用ShowDialog时,主窗口应该暂停。只有在窗口关闭后,才会调用OnNavigatedTo方法。感谢这些链接,它们看起来很有用。不过,我不知道它如何解决我的用例,我将更完整地填写我的问题。本质上,弹出窗口应该能够以代码显示,并通过其名称(而不是xaml)显示视图?您希望如何传递参数,使用命令,为什么您认为a区域弹出行为适合您,所有这些。@Landerah:您找到解决方案了吗?很抱歉,我没有找到任何好的解决方案。正如我向@R.Richards提到的,该答案中的解决方案并没有完全解决这个问题。这可能是因为我试图以一种不应该的方式使用棱镜。我已经迷恋了一段时间,也许有新的强大能力;)@ascholz我只想补充一点,问题是OnNavigatedTo只有在导航到至少一次之后才被调用。我想我是通过在启动时“导航”到所有东西来解决的…@Landerah:我找到了一个解决方案。希望对你有帮助。
using Prism.Interactivity.InteractionRequest;
public class ConfirmMedInViewModel : IInteractionRequestAware
{
public INotification Notification
{
get
{
return _confirmation;
}
set
{
SetProperty(ref _confirmation, (IConfirmation)value);
}
}
public Action FinishInteraction { get; set;
}