수색…


소개

이 예제에서는 MVVM 패턴과 WPF 내에서 ViewModel과 View를 만드는 방법과 두 객체를 서로 바인딩하여 다른 객체가 변경 될 때마다 각각이 업데이트되도록하는 방법을 보여줍니다.

ViewModel의 문자열을 뷰의 TextBox에 바인딩

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

DependencyProperty는 wpfdp 코드 조각 ( wpfdp 입력 한 다음 TAB 키를 두 번 누름)을 사용하여 쉽게 추가 할 수 있지만 코드 조각은 형식에 안전하지 않으며 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

이것은 MVVM 및 데이터 바인딩을 구현하는 매우 기초적인 방법입니다. 보다 견고한 방법은 Unity와 같은 플랫폼을 사용하여 ViewModel을 View에 "삽입"하는 것입니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow