![](/img/trans.png)
[英]Accessing items in ObservableCollection bound to 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.