Хорошо, я подумал, что добавлю еще один ответ, который касается специфики вашего примера приложения.Я посмотрел пример, но код, кажется, немного изменчив!Во-первых, вы нигде не устанавливали DataContext из MainWindow (представление), для этого следует установить экземпляр вашей модели представления (UserViewModel.vb, хотя я бы рассмотрел возможность переименования либо представления, либо модели представления, чтобы они, например,MainView и MainViewModel).
Вы можете установить DataContext несколькими способами, используя подход сначала вида или модели вида сначала.Один быстрый способ начать тестирование заключается в конструкторе вашего представления:
// MainWindow.xaml.vb
Class MainWindow
Public Sub New()
InitializeComponent()
Me.DataContext = New UserViewModel()
End Sub
End Class
Теперь в вашем UserViewModel у вас есть свойство UserName, но, похоже, оно возвращает и устанавливает свойство username объекта User.Несмотря на то, что пользовательский объект никогда, кажется, нигде не установлен.Для простоты я просто использовал вместо этого строку с новым вспомогательным полем:
Private _username As String
Public Property UserName() As String
Get
Return _username
End Get
Set(ByVal Value As String)
_username = Value
MyBase.OnPropertyChanged("UserName")
End Set
End Property
Первоначально вы по какой-то причине вызывали MyBase.OnPropertyChanged ("Address") ??Возможно, это была ошибка копирования / вставки, но строковое значение должно совпадать с именем свойства, значение которого изменилось, поскольку механизм привязки будет использовать отражение для получения нового значения свойства.
Наконец, я только что изменилвыражение привязки в MainWindow.xaml
<TextBlock Grid.Row="0" Text="{Binding UserName}" />
Поскольку DataContext явно не задан для TextBlock, он будет использовать DataContext представления (UserControl), который установлен в экземпляр UserViewModel.Это означает, что он будет привязан к свойству UserName в этом DataContext, что вам нужно.Чтобы проверить это, вы можете установить значение Me.UserName = "Something" в конструкторе UserViewModel.
Надеемся, вы сможете увидеть, как работает привязка для строк, и вы можете решить, где вам нужноперейдите, чтобы заставить его работать для вашего типа пользователя.