【问题标题】:Accesing items in ObservableCollection bound to WPF DataGrid访问 ObservableCollection 中的项目绑定到 WPF DataGrid
【发布时间】:2018-04-06 18:02:58
【问题描述】:

我知道这个问题和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 不太熟悉(其余代码是代码隐藏)

【问题讨论】:

    标签: c# wpf mvvm datagrid observablecollection


    【解决方案1】:

    您需要将项目转换为SelectableViewModel

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

    【讨论】:

    • 如果我使用SelectedItems[0],我会退出索引错误。当我使用SelectedItem 时,我仍然得到“MyProject.SelectableViewModel”。我调用 SelectedItem 的事件在 DataGrid 中被调用,因为行是动态添加的。这就是为什么不起作用?以及如何让它发挥作用?编辑:我也忘了更改 MessageBox。谢谢你的帮助。如何调用投射物品? (Word to google 以更好地理解我为什么必须投射)
    • 编辑了我的评论。
    猜你喜欢
    • 2016-02-21
    • 2013-10-14
    • 1970-01-01
    • 2017-02-08
    • 2015-01-26
    • 2015-04-02
    • 1970-01-01
    • 2014-08-23
    • 2017-04-16
    相关资源
    最近更新 更多