Visual Basic .NET Language
WPF XAML-databindning
Sök…
Introduktion
Det här exemplet visar hur man skapar en ViewModel och en vy i MVVM-mönstret och WPF, och hur man binder de två så att var och en uppdateras när den andra ändras.
Binder en sträng i ViewModel till en TextBox i vyn
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
En DependencyProperty kan enkelt läggas till med hjälp av wpfdp
(skriv wpfdp
, tryck sedan på TAB
tangenten två gånger), men kodavsnittet är inte typsäkert och kommer inte att kompilera under 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
Observera att detta är ett mycket rudimentärt sätt att implementera MVVM och databinding. En mer robust praxis skulle vara att använda en plattform som Unity för att "injicera" ViewModel i vyn.
Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow