我有一个WPF DataGrid,其中一列上有一个按钮。 当我点击按钮时,我有这个函数叫做:
MyClass mySC = (MyClass)(CollectionViewSource.GetDefaultView(grdMyClass.DataContext).CurrentItem);
这段代码很完美,但是当我点击新行上的按钮(网格上的最后一个)时,我得到它之前的行的msSC,而不是null,或者与最后一行有关的东西
如何检查按钮是否在新行中被点击?
答案 0 :(得分:1)
如果您的意图是单击按钮应该对绑定到该行的数据执行某些操作,那么只需从按钮的数据上下文中获取数据。如果为null,则用户单击空行。
private void Button_Click(object sender, RoutedEventArgs e)
{
MyClass data = (sender as FrameworkElement).DataContext as MyClass;
}
答案 1 :(得分:0)
我遇到了完全相同的问题,并创建了自己的解决方案。
我有一个DataSrid,其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,因此我的应用程序认为实际上没有选择任何内容。
希望这可以提供帮助,随时提出更多要求:)