访问ObservableCollection中的项目绑定到WPF DataGrid

时间:2017-10-25 15:07:46

标签: c# wpf mvvm datagrid observablecollection

我知道这个问题与Accessing items in ObservableCollection bound to WPF DataGrid

类似

但这个问题的答案并没有帮助我。

我已经创建了一个我的ObservableCollection所在的类(DataItem.cs)。 另一个类(SelectableViewModel.cs),其中列的属性为。

public class DataItem : INotifyPropertyChanged
{
    public ObservableCollection<SelectableViewModel> FirmCustomerItems { get; set; } = new ObservableCollection<SelectableViewModel>();
}

public class SelectableViewModel : INotifyPropertyChanged
{
    private string _columnName;

    public string ColumnName
    {
        get { return _columnName; }
        set
        {
            if (_columnName== value) return;
            _columnName= value;
            OnPropertyChanged();
        }
    }
}

如果我不想访问SelectedItem / Value / Items [0],我将得到以下结果:

&#34; MyProject.SelectableViewModel&#34;

这就是我想要访问SelectedItem的方式:

DataGrid dataGrid = sender as DataGrid;
switch (dataGrid.Name)
{
    case "FirmCustomerTableDataGrid":
        //var selected = dataGrid.SelectedValue;   // my First try
        //var selected = dataGrid.SelectedItem;    // my Second try
        var selected = dataGrid.SelectedItems[0] // my Third try
        MessageBox.Show(selected.ToString());
        break;
}

我在问题顶部的链接问题的答案无效,因为我有一个列属性类(SelectableViewModel)。

但我不知道解决这个问题,因为我对MVVM并不熟悉(其余代码是代码隐藏)

1 个答案:

答案 0 :(得分:3)

您需要将项目转换为SelectableViewModel

var selected = dataGrid.SelectedItems[0] as SelectableViewModel;
if (selected != null)
    MessageBox.Show(selected.ColumnName);