簡體   English   中英

訪問ObservableCollection中的項目綁定到WPF DataGrid

[英]Accesing items in ObservableCollection bound to WPF DataGrid

我知道這個問題類似於綁定到WPF DataGrid的ObservableCollection中的訪問項

但這個問題的答案對我沒有幫助。

我創建了一個Class(DataItem.cs),我的ObservableCollection就在這里。 另一個類(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],我將得到以下結果:

“MyProject.SelectableViewModel”。

這是我想要訪問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並不熟悉(其余的代碼是代碼隱藏)

您需要將項目轉換為SelectableViewModel

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM