2016-03-08 106 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

Content =「{Binding Path = 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

啊是的,我做的BindingExpression路徑錯誤:'對象'找不到'UserModel'屬性'''MainWindowVM' 但是,UserModel在MainWindowVM中定義爲public – DNKROZ