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