Visual Basic .NET Language
WPF XAML-gegevensbinding
Zoeken…
Invoering
Dit voorbeeld laat zien hoe u een ViewModel en een View maakt binnen het MVVM-patroon en WPF, en hoe u de twee aan elkaar kunt binden, zodat elke wordt bijgewerkt wanneer de andere wordt gewijzigd.
Een string in het ViewModel binden aan een TextBox in de View
SampleViewModel.vb
'Import classes related to WPF for simplicity
Imports System.Collections.ObjectModel
Imports System.ComponentModel
Public Class SampleViewModel
Inherits DependencyObject
'A class acting as a ViewModel must inherit from DependencyObject
'A simple string property
Public Property SampleString as String
Get
Return CType(GetValue(SampleStringProperty), String)
End Get
Set(ByVal value as String)
SetValue(SampleStringProperty, value)
End Set
End Property
'The DependencyProperty that makes databinding actually work
'for the string above
Public Shared ReadOnly SampleStringProperty As DependencyProperty = _
DependencyProperty.Register("SampleString", _
GetType(String), GetType(SampleViewModel), _
New PropertyMetadata(Nothing))
End Class
Een DependencyProperty kan eenvoudig worden toegevoegd met behulp van het wpfdp
-codefragment (typ wpfdp
en druk vervolgens tweemaal op de TAB
toets), maar het codefragment is niet type-veilig en compileert niet onder Option Strict On
.
SampleWindow.xaml
<Window x:Class="SampleWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:des="http://schemas.microsoft.com/expression/blend/2008"
DataContext="{Binding}"
Loaded="Window_Loaded">
<Grid>
<TextBox>
<TextBox.Text>
<Binding Path="SampleString" />
</TextBox.Text>
</TextBox>
</Grid>
</Window>
SampleWindow.xaml.vb
Class SampleWindow
Private WithEvents myViewModel As New SampleViewModel()
Private Sub Window_Loaded(sender As Object, e As RoutedEventArgs)
Me.DataContext = myViewModel
End Sub
End Class
Merk op dat dit een zeer rudimentaire manier is om MVVM en databinding te implementeren. Een meer robuuste praktijk zou zijn om een platform als Unity te gebruiken om het ViewModel in de View te "injecteren".
Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow