WPF DataGrid按钮单击新行在当前项中获取错误行

WPF DataGrid按钮单击新行在当前项中获取错误行,wpf,datagrid,Wpf,Datagrid,我有一个WPF数据网格,其中一列上有一个按钮。 当我单击按钮时,我将此函数称为: MyClass mySC = (MyClass)(CollectionViewSource.GetDefaultView(grdMyClass.DataContext).CurrentItem); 这段代码工作得很完美,但当我点击新行(网格上最后一行)上的按钮时,我会得到它前面那行的msSC,而不是null,或者与最后一行相关的东西 如何检查新行中是否单击了按钮?我刚刚遇到了完全相同的问题,并创建了自己的解决方案

我有一个WPF数据网格,其中一列上有一个按钮。 当我单击按钮时,我将此函数称为:

MyClass mySC = (MyClass)(CollectionViewSource.GetDefaultView(grdMyClass.DataContext).CurrentItem);
这段代码工作得很完美,但当我点击新行(网格上最后一行)上的按钮时,我会得到它前面那行的msSC,而不是null,或者与最后一行相关的东西


如何检查新行中是否单击了按钮?

我刚刚遇到了完全相同的问题,并创建了自己的解决方案

我有一个DataGrid,其中ItemsSource绑定到我的ViewModel中的一个列表,SelectedIndex绑定到ViewModel中的一个int,以便在我们选择某个对象(例如模拟“OnSelectionChanged”之类的事件)时能够使用该列表

因此,这里的解决方案非常简单:

//App selected on the list
private int _selectedApp;

public int SelectedApp
{
    get { return _selectedApp; }
    set 
    {
        if (value == _listApps.Count) _selectedApp = -1;
        else _selectedApp = value;
        OnPropertyChanged("SelectedApp");
    }
}
我只是检查索引是否超出范围:如果超出范围,我将其设置为-1,因此我的应用程序认为实际上没有选择任何内容


希望这能有所帮助,请随意询问更多:)

如果您的意图是单击按钮应该对绑定到该行的数据进行处理,那么只需从按钮的数据上下文中获取数据即可。如果为空,则用户单击一个空行

private void Button_Click(object sender, RoutedEventArgs e)
{
    MyClass data = (sender as FrameworkElement).DataContext as MyClass;
}

谢谢,我会检查这是否有效,@Wallstreet程序员解决方案对我有效。