在XAML MVVM中绑定数据网格的特定列的选定值

时间:2013-08-13 20:15:07

标签: .net wpf xaml

我已经坚持了很长时间,希望我能在这里得到一些帮助。

所以我有一个填充了数据的数据网格。 在我的viewmodel类中,我有一个Person属性,其属性为 - >

firstname,lastname,dateofbirth,id等。

现在,用户只能在数据网格中一次选择一行。对于选定的行,我希望每列都绑定到person对象的属性。在XAML中我有办法做到这一点吗?

非常感谢

1 个答案:

答案 0 :(得分:0)

您可以使用DataGrid的 SelectedItem 属性来执行此操作,该属性将数据网格选定项目直接绑定到其对应的ViewModel类属性。请参阅下面的代码段,如果有用,请标记答案。

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        this.DataContext = new ViewModel();
    }
}

//VIEW MODEL
public class ViewModel
{
    private Person _selectedPerson;
    public Person SelectedPerson
    {
        get { return _selectedPerson; }
        set { _selectedPerson = value; }
    }
    public List<Person> PersonCollection { get; set; }

    public ViewModel()
    {
        PersonCollection = new List<Person>();
        for (int i = 0; i < 10; i++)
        {
            PersonCollection.Add(new Person()
            {
                Id = i.ToString(),
                FirstName = "First Name " + i.ToString(),
                LastName = "Last Name " + i.ToString()
            });
        }
    }
}

//PERSON CLASS
public class Person
{
    public string Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

In XAML
-------

<Window x:Class="WpfApplication2.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
    <Grid>
        <DataGrid ItemsSource="{Binding PersonCollection}"
                  SelectedItem="{Binding SelectedPerson}" />
    </Grid>
 </Window>