2016-03-08 2 views
3

Я устанавливаю свой контекст данных в код позади и устанавливаю привязки в XAML. Отладка показывает, что мой контекст данных заполняется из моей модели, однако это не отражается на моем представлении.MVVM привязка не отображается в поле зрения

Возможно, что-то простое, но это беспокоит меня часами.

public partial class MainWindow : Window 
{ 
    public MainWindow(MainWindowVM MainVM) 
    { 

     this.DataContext = MainVM; 
     InitializeComponent(); 


    } 
} 

    public class MainWindowVM : INotifyPropertyChanged 
{ 
    private ICommand m_ButtonCommand; 
    public User UserModel = new User(); 
    public DataAccess _DA = new DataAccess(); 

    public MainWindowVM(string email) 
    { 
     UserModel = _DA.GetUser(UserModel, email); 
     //ButtonCommand = new RelayCommand(new Action<object>(ShowMessage)); 
    } 
    } 


public class User : INotifyPropertyChanged 
{ 
    private int _ID; 
    private string _FirstName; 
    private string _SurName; 
    private string _Email; 
    private string _ContactNo; 

    private List<int> _allocatedLines; 

    public string FirstName 
    { 
     get 
     { 
      return _FirstName; 
     } 
     set 
     { 
      _FirstName = value; 
      OnPropertyChanged("FirstName"); 
     } 
    } 
    } 



<Label Content="{Binding Path=FirstName}" HorizontalAlignment="Right" VerticalAlignment="Top" Padding="0,0,150,0"/> 
+0

Вы связываетесь с 'UserModel' в любом месте? – Domysee

+0

Содержимое = "{Путь привязки = UserModel.FirstName}" Нет? – tim

ответ

7

Вы устанавливаете MainWindowVM объект как DataContext, который не имеет FirstName свойства.

Если вы хотите привязать к первому имени пользователя, вам необходимо указать путь UserModel.FirstName, как если бы вы обращались к нему в коде.

Так что ваши привязки должен выглядеть следующим образом:

<Label Content="{Binding Path=UserModel.FirstName}" HorizontalAlignment="Right" VerticalAlignment="Top" Padding="0,0,150,0"/> 

Кроме того, необходимо определить UserModel в собственность вместо поля.

public User UserModel { get; set; } = new User(); 
+0

Я пытался это раньше, просто попробовал еще раз и не повезло – DNKROZ

+0

@DNKROZ вы видите какие-либо сообщения об ошибках в окне вывода? – Domysee

+0

Ah yes i do BindingExpression path error: свойство UserModel не найдено в 'object' '' MainWindowVM ' Однако UserModel определен в MainWindowVM как общедоступный – DNKROZ

Смежные вопросы