[C#]MVVM 绑定在视图中不显示

标签: MVVM WPF xaml C#
发布时间: 2017/2/24 1:21:31
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我在背后,代码中设置我的数据上下文,在 XAML 中设置绑定。 调试揭示了我的数据上下文正在被填充,从我的模型,然而这不被反映在我的观点。

可能事情简单,但这已经困扰了我几个小时。

 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"/>

解决方法 1:

您正在设置 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();
赞助商