I have created a wpf vb.net project and am trying to set a simple databing. I’m not quiet sure how to set my DataContext = this; in the codebind. Currently when i run the program my Label never is updated. I have included my code below. What I’m i missing?
<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
This is close – you need to name your label in the XAML (so that you can reference it from the code behind) and then specify the path within the bound object to the data you would like to bind. In this case you will be binding an object with a
Nameproperty whose content you would like to assign to the label text:and then in your code you need to set the
DataContextof the label to the object you would like to have it bound to, in this case a specific instance,somePersonof the classPerson: