我在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