Visual Basic .NET Language
WPF-XAML-Datenbindung
Suche…
Einführung
In diesem Beispiel wird gezeigt, wie ein ViewModel und eine View innerhalb des MVVM-Musters und der WPF erstellt und die beiden miteinander verbunden werden, sodass jedes aktualisiert wird, wenn das andere geändert wird.
Binden einer Zeichenfolge im ViewModel an ein Textfeld in der Ansicht
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
Eine DependencyProperty kann einfach mit dem wpfdp
hinzugefügt werden (geben Sie wpfdp
, drücken wpfdp
dann zweimal die TAB
wpfdp
). Der wpfdp
ist jedoch nicht typsicher und wird unter Option Strict On
nicht kompiliert.
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
Beachten Sie, dass dies eine sehr rudimentäre Methode ist, um MVVM und Datenbindung zu implementieren. Eine robustere Vorgehensweise wäre, eine Plattform wie Unity zu verwenden, um das ViewModel in die Ansicht zu "injizieren".
Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow