Visual Basic .NET Language
Associazione dati XAML WPF
Ricerca…
introduzione
Questo esempio mostra come creare un ViewModel e una Vista all'interno del pattern MVVM e WPF, e come associare i due insieme, in modo che ciascuno venga aggiornato ogni volta che viene modificato l'altro.
Associazione di una stringa in ViewModel a un controllo TextBox nella vista
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
Una DependencyProperty può essere facilmente aggiunta utilizzando lo snippet di codice wpfdp
(digita wpfdp
, quindi premi due volte il tasto TAB
), tuttavia, lo snippet di codice non è sicuro, e non verrà compilato in 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
Si noti che questo è un modo molto rudimentale per implementare MVVM e il databinding. Una pratica più solida sarebbe quella di utilizzare una piattaforma come Unity per "iniettare" ViewModel nella Vista.
Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow