2
wpf vb.net 프로젝트를 만들었으며 간단한 데이터 베킹을 설정하려고합니다. 나는 DataContext = this를 설정하는 방법에 대해 조용하지 않다. 코드 바인드에서. 현재 프로그램을 실행할 때 Label이 업데이트되지 않습니다. 나는 아래에 나의 코드를 포함시켰다. 내가 뭘 놓치고있어?Wpf의 텍스트 상자에 속성을 데이터 바인딩하는 방법
<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Label Content="{Binding person.Name}"/>
</Grid>
</Window>
Class MainWindow
Private Property person As New Person()
Public Sub New()
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
person.Name = "Poco"
End Sub
End Class
System.ComponentModel
Public Class Person
Implements INotifyPropertyChanged
Private _name As String
Public Property Name() As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
OnPropertyChanged(New PropertyChangedEventArgs("Name"))
End Set
End Property
Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged
Public Sub OnPropertyChanged(ByVal e As PropertyChangedEventArgs)
If Not PropertyChangedEvent Is Nothing Then
RaiseEvent PropertyChanged(Me, e)
End If
End Sub
End Class
감사합니다 사람에게. 너처럼 모델을 볼 수도있어. 이렇게하면 내 컨트롤의 이름을 지정하지 않아도됩니다. 나는 당신의 응답을 appriciate. – poco
@poco - DataContext 클래스를'person'으로 설정하는 것은 다소 효과가 있지만 접근 방법이 제한적입니다. 그것은 당신의 수업에서 모든 바인딩이 '사람'을 바라 볼 것임을 의미합니다. 당신은 정말로'person'이 당신의 전체 클래스를위한 DataContext가되도록하고 싶지는 않습니다. 단지 특정 레이블을 위해서입니다. 클래스의 다른 부분은 다른 데이터 컨텍스트를 원할 수 있습니다. 당신이하고있는 일에 따라 달라질 수 있습니다. –