我想将我的代码转换为MVVM模式。
目前我的代码是: -
Sub New()
InitializeComponent()
AddHandler Me.Closing, AddressOf Main_closing
End Sub
Private Sub Main_closing(sender As Object, e As CancelEventArgs)
Globals.IsBestBillStatementActive = False
Global.Main.ResetSessionTimeoutTimer()
End Sub
将其转换为MVVM模式。我在视图中更改了我已更改的代码,如下所示: -
在视图中添加了命名空间: -
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
添加了活动
<i:Interaction.Triggers>
<i:EventTrigger EventName="Closing">
<i:InvokeCommandAction Command="{Binding CloseCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
请告诉我需要在View和ViewModel中进行哪些其他更改。
谢谢, 拉胡
答案 0 :(得分:1)
现在您只需要在ViewModel中处理CloseCommand,并在执行命令时调用两行代码:
Globals.IsBestBillStatementActive = False
Global.Main.ResetSessionTimeoutTimer()
答案 1 :(得分:0)
1)您需要创建一个公共ICommand属性
public ICommand CloseCommand { get; set; }
2)然后,您需要在ViewModel的构造函数中初始化CloseCommand
CloseCommand = New BaseCommand(OnClose)
BaseCommand是ICommand的一个实现。你可以在网上找到很多。
3)然后在OnClose中你会做
Private Sub OnClose()
Globals.IsBestBillStatementActive = False
Global.Main.ResetSessionTimeoutTimer()
End Sub