Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将文本框字段绑定到对象_C#_Wpf_Xaml_Mvvm - Fatal编程技术网

C# 将文本框字段绑定到对象

C# 将文本框字段绑定到对象,c#,wpf,xaml,mvvm,C#,Wpf,Xaml,Mvvm,嘿,如果您有一个对象,例如Person,其属性为FirstName,LastName,生日。你需要把每一处房产分开吗 如ViewModel.cs中所示: private string _FirstName; public string FirstName { get { return _FirstName; } set { _FirstName = value; RaisePropertyChanged("FirstName")

嘿,如果您有一个对象,例如
Person
,其属性为
FirstName
LastName
生日
。你需要把每一处房产分开吗

如ViewModel.cs中所示:

private string _FirstName;
public string FirstName
{
     get { return _FirstName; }
     set 
     {
         _FirstName = value;
         RaisePropertyChanged("FirstName"); 
     }
}
这在View.xaml中

<TextBox Text="{Binding FirstName, Mode=TwoWay}" />

我试过这个:

<TextBox Text="{Binding Person.FirstName, Mode=TwoWay}" />


这样我就不需要输入每个属性。这可能吗?具体是怎样的呢?

这里有一个模式可以遵循:

型号

public class Notifier : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    protected void RaisePropertyChanged([CallerMemberName] string propertyName = "")
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

public class Person : Notifier 
{
    private string _firstName;

    public string FirstName
    {
        get { return _firstName; }
        set
        {
            _firstName = value;
            RaisePropertyChanged(); //No need to pass "FirstName".
        }
    }
}
public class PersonViewModel : Notifier
{
    private Person _person;

    public Person Person
    {
        get { return _person; }
        set
        {
            _person= value;
            RaisePropertyChanged(); //No need to pass "Person".
        }
    }
}
视图模型

public class Notifier : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    protected void RaisePropertyChanged([CallerMemberName] string propertyName = "")
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

public class Person : Notifier 
{
    private string _firstName;

    public string FirstName
    {
        get { return _firstName; }
        set
        {
            _firstName = value;
            RaisePropertyChanged(); //No need to pass "FirstName".
        }
    }
}
public class PersonViewModel : Notifier
{
    private Person _person;

    public Person Person
    {
        get { return _person; }
        set
        {
            _person= value;
            RaisePropertyChanged(); //No need to pass "Person".
        }
    }
}
视图(此视图的
数据上下文
假定为
PersonViewModel
类的实例)



你到底想问什么?@HosseinNarimaniRad如果可以只绑定到Person,然后绑定到Person的属性。你需要绑定每个属性。XAML不能变魔术(除非您正在寻找一个类似属性网格的控件来“转储”对象上的每个公共属性您可以将视图的DataContext设置为Person,然后无需说
Person.FirstName
只需说
FirstName
。是否查找此项?您需要为任何在建立XAML绑定后可能更改的属性引发属性更改事件。首先,请编辑您的问题如果有一个完整的例子,那么就值得讨论必要的更改。这个讨论完全是假设性的。