我在Prism Unity,WPF & Mvvm的应用程序中创建了自定义确认窗口。我需要帮助才能将需要发送回视图模型的通知。我在详细记录视图中有这个,我们称之为MyDetailView。棱镜定制确认互动
<!-- Custom Confirmation Window -->
<ie:Interaction.Triggers>
<interactionRequest:InteractionRequestTrigger
SourceObject="{Binding ConfirmationRequest, Mode=TwoWay}">
<mycontrols:PopupWindowAction1 IsModal="True"/>
</interactionRequest:InteractionRequestTrigger>
</ie:Interaction.Triggers>
如上图所示,我所做的交互模式=双向,以便确认弹出窗口中可以发送回按钮点击结果的确定或取消按钮。确认窗口应该显示,但我不知道如何将按钮点击结果发送回我的viewmodel,比如MyDetailViewModel。这是主要问题。
编辑:这是引发InteractionRequest的MyDetailViewMmodel方法。
private void RaiseConfirmation()
{ConfirmationRequest
.Raise(new Confirmation()
{
Title = "Confirmation Popup",
Content = "Save Changes?"
}, c =>{if (c.Confirmed)
{ UoW.AdrTypeRos.Submit();}
这是PopupWindowAction1类。部分问题的答案可能是如何实现Notification和FinishedInteraction方法。
class PopupWindowAction1 : PopupWindowAction, IInteractionRequestAware
{
protected override Window GetWindow(INotification notification)
{ // custom metrowindow using mahapps
MetroWindow wrapperWindow = new ConfirmWindow1();
wrapperWindow.DataContext = notification;
wrapperWindow.Title = notification.Title;
this.PrepareContentForWindow(notification, wrapperWindow);
return wrapperWindow;
}
public INotification Notification
{
get { throw new NotImplementedException(); }
set { throw new NotImplementedException(); }
}
public Action FinishInteraction
{
get { throw new NotImplementedException(); }
set { throw new NotImplementedException(); }
}
}
是否有一些交互需要放在我的ConfirmWindow1中,像这样?
<i:Interaction.Triggers>
<i:EventTrigger EventName="PreviewMouseLeftButtonUp">
<ei:CallMethodAction
TargetObject="{Binding RelativeSource={RelativeSource AncestorType=UserControl},
Path=DataContext}"
MethodName="DataContext.ValidateConfirm"/>
</i:EventTrigger>
</i:Interaction.Triggers>
我是否甚至需要在按钮中进行这种类型的交互?如果是这样,我该如何编码它,以便它对应于调用交互的特定视图模型。有什么建议么?谢谢。
谢谢。我会试试看。 – harpagornis
我有一个不同的是,我试图在双向模式中进行交互请求。另一个是我使用MetroWindow作为确认弹出窗口,即。 wrapperWindow。DataContext =通知;这将我的弹出窗口的DataContext设置为InteractionRequest,因此为了修改我的代码以匹配建议,我需要以某种方式更新弹出窗口的viewmodel中的Notification属性,当它接管新的DataContext时。 – harpagornis
双向或单向只影响绑定,我使用OneWay,因为我的'SelectQuantityRequest'属性是只读的,不需要改变。 Notification-Property来自实现'IInteractionRequestAware',它应该由框架来设置。 – Haukinger