Visual Basic .NET Language
Liaison de données WPF XAML
Recherche…
Introduction
Cet exemple montre comment créer un ViewModel et un View dans le modèle MVVM et WPF, et comment lier les deux ensemble, de sorte que chacun soit mis à jour chaque fois que l'autre est modifié.
Liaison d'une chaîne dans le ViewModel à une TextBox dans la vue
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
Un DependencyProperty peut être facilement ajouté à l'aide de l' wpfdp
code wpfdp
(tapez wpfdp
, puis appuyez deux fois sur la touche TAB
), mais l'extrait de code n'est pas sûr et ne sera pas compilé sous 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
Notez que c'est un moyen très rudimentaire d'implémenter MVVM et la liaison de données. Une pratique plus robuste consisterait à utiliser une plate-forme comme Unity pour «injecter» le ViewModel dans la vue.
Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow