Reputation: 48550
I have a code snippet in C# which i want to convert into VB.Net
public class ModuleAViewOne : UserControl
{
public ModuleAViewOne(ModuleAViewOneViewModel model)
{
InitializeComponent();
this.Loaded += (s, e) =>
{
this.DataContext = model;
}
}
}
I converted it into VB.Net this way
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
but can event be written inside constructor so that I do not have to create a new global model
variable?
Upvotes: 1
Views: 415
Reputation: 101122
You can simply use a lambda expression
Public Sub New(model As ModuleAViewOneViewModel)
InitializeComponent()
AddHandler Loaded, Sub(s, e) DataContext = model
End Sub
Or, since VB 10.0 (shipped with Visual Studio 2010), you can use a multiline lambda:
Public Sub New(model As ModuleAViewOneViewModel)
InitializeComponent()
AddHandler Loaded, Sub(s, e)
DataContext = model
End Sub
End Sub
Upvotes: 3