gpt4 book ai didi

c# - 访问 ObservableCollection 中的项目绑定(bind)到 WPF DataGrid

转载 作者:太空宇宙 更新时间:2023-11-03 22:52:16 26 4
gpt4 key购买 nike

我知道这个问题与 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],我将得到以下结果:

“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);

关于c# - 访问 ObservableCollection 中的项目绑定(bind)到 WPF DataGrid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46935955/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com