1

VB.Netに変換したいC#のコードスニペットがあります

public class ModuleAViewOne : UserControl
{
    public ModuleAViewOne(ModuleAViewOneViewModel model)
    {
        InitializeComponent();

        this.Loaded += (s, e) =>
        {
            this.DataContext = model;
        }
    }
}

この方法でVB.Netに変換しました

Partial Public Class ModuleAViewOne
 Inherits UserControl

Public Sub New(ByVal model As ModuleAViewOneViewModel)
        InitializeComponent()

        Me.model = model

        AddHandler Loaded, AddressOf _Loaded
    End Sub

    Dim model As ModuleAViewOneViewModel

    Private Sub _Loaded(ByVal s As Object, ByVal e As RoutedEventArgs)
        DataContext = model
    End Sub
End Class

modelしかし、新しいグローバル変数を作成する必要がないように、コンストラクター内にイベントを書き込むことはできますか?

4

1 に答える 1

3

ラムダ式を使用するだけです

Public Sub New(model As ModuleAViewOneViewModel)
    InitializeComponent()

    AddHandler Loaded, Sub(s, e) DataContext = model
End Sub

または、VB 10.0(Visual Studio 2010に同梱)以降、複数行のラムダを使用できます。

Public Sub New(model As ModuleAViewOneViewModel)
    InitializeComponent()

    AddHandler Loaded, Sub(s, e) 
                          DataContext = model
                       End Sub
End Sub
于 2012-08-28T07:14:28.777 に答える