将一个WPF数据网格绑定到一个observablecollection,它将从数据库中填充,该数据库可以根据列值的值进行编辑或不可编辑。
现在,想通过可编辑的上下文菜单点击在数据网格中添加一个新行,尽管现有的行不可编辑(即禁用)。
这可以通过使用列值上的数据触发器并在绑定值上定义转换器(即,selectedItem到行)来实现。现在,问题是当我添加新行时,我传递的命令参数是selectedItem,即
菜单项代码:
MenuItem Header="Add" Command="{Binding AddClickCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ContextMenu}}, Path=PlacementTarget.SelectedItem}"
所以,这是我点击添加新行(第2行)的现有行(即第1行),因此,我得到现有行的上下文(即第1行)。
任何人都可以帮助我获取添加新行的上下文,即第2行,通过该行我可以设置某些标志以使该行可编辑!
答案 0 :(得分:0)
如果您想在数据网格中添加一个新行,为什么不简单地创建一个添加命令,在其中向ObservableCollection添加一个新项目并将此新项目设置为您的selectedItem,以便在您的数据网格中选择它。
private void AddCommandExecute()
{
var toAdd = new MyItem();//new "row item"
this.MyCollection.Add(toAdd);//add to collection with automatic notification
this.MySelectedItem = toAdd;//set as selected
}
答案 1 :(得分:0)
获取ObservableCollection
。
var myNewRow = new RowViewModel();
_rows.Add(myNewRow);
var newRowIndex = _rows.IndexOf(myNewRow);