将代码转换为MVVM Pattern

时间:2015-06-11 14:47:34

标签: wpf vb.net mvvm

我想将我的代码转换为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中进行哪些其他更改。

谢谢, 拉胡

2 个答案:

答案 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