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