在网格中插入行后从 NewItemRow 获取数据
Get data from NewItemRow after row inserted in grid
我正在使用 DevExpress XPF GridControl 的 NewItemRow 向我的数据库添加新行。如何从新行中获取用户输入的数据。我正在使用棱镜框架。这是我的 xaml
<dxg:GridControl.View>
<dxg:TableView AutoWidth="True" AllowEditing="True" NewItemRowPosition="Top">
<dxmvvm:Interaction.Behaviors>
<dxmvvm:EventToCommand EventName="RowUpdated"
Command="{Binding RowUpdateClickCommand}" CommandParameter="{Binding CurrentItem}"/>
</dxmvvm:Interaction.Behaviors>
</dxg:TableView>
</dxg:GridControl.View>
要获取有关更新行的信息,您可以将 EventArgs 传递给您的命令。要完成此任务,请将 EventToCommand.PassEventArgsToCommand 属性 设置为 true:
<dxmvvm:EventToCommand EventName="RowUpdated" PassEventArgsToCommand="True"
Command="{Binding RowUpdateClickCommand}"/>
要确定用户修改了 NewItemRow,您可以将 RowEventArgs.RowHandle 与静态 GridControl.NewItemRowHandle 属性:
public class MyViewModel {
public MyViewModel() {
RowUpdateClickCommand = new DelegateCommand<RowEventArgs>(RowUpdateClick);
}
public ICommand RowUpdateClickCommand {
get;
set;
}
public void RowUpdateClick(RowEventArgs e) {
if (e.RowHandle == GridControl.NewItemRowHandle) {
//e.Row - new row is here
}
}
}
请注意,如果您不想将事件参数传递到视图模型级别,您可以使用 EventArgsConverter
进行转换
我正在使用 DevExpress XPF GridControl 的 NewItemRow 向我的数据库添加新行。如何从新行中获取用户输入的数据。我正在使用棱镜框架。这是我的 xaml
<dxg:GridControl.View>
<dxg:TableView AutoWidth="True" AllowEditing="True" NewItemRowPosition="Top">
<dxmvvm:Interaction.Behaviors>
<dxmvvm:EventToCommand EventName="RowUpdated"
Command="{Binding RowUpdateClickCommand}" CommandParameter="{Binding CurrentItem}"/>
</dxmvvm:Interaction.Behaviors>
</dxg:TableView>
</dxg:GridControl.View>
要获取有关更新行的信息,您可以将 EventArgs 传递给您的命令。要完成此任务,请将 EventToCommand.PassEventArgsToCommand 属性 设置为 true:
<dxmvvm:EventToCommand EventName="RowUpdated" PassEventArgsToCommand="True"
Command="{Binding RowUpdateClickCommand}"/>
要确定用户修改了 NewItemRow,您可以将 RowEventArgs.RowHandle 与静态 GridControl.NewItemRowHandle 属性:
public class MyViewModel {
public MyViewModel() {
RowUpdateClickCommand = new DelegateCommand<RowEventArgs>(RowUpdateClick);
}
public ICommand RowUpdateClickCommand {
get;
set;
}
public void RowUpdateClick(RowEventArgs e) {
if (e.RowHandle == GridControl.NewItemRowHandle) {
//e.Row - new row is here
}
}
}
请注意,如果您不想将事件参数传递到视图模型级别,您可以使用 EventArgsConverter
进行转换