gpt4 book ai didi

c# - DataGrid 保存按钮和 CanExecute

转载 作者:太空宇宙 更新时间:2023-11-03 16:45:38 33 4
gpt4 key购买 nike

我在 XAML 中有一个数据网格和保存按钮。我有一个绑定(bind)到数据网格的 ObservableCollection。

如果我在数据网格中添加/删除一行,我应该能够启用“保存”按钮以允许用户保存记录。但是,ObservableCollection 的 NotifyCollectionChangedAction 无法捕获“编辑”(即值更改)。所以我想在调用数据网格的 currentcellchanged 事件时手动启用保存按钮(即设置 e.CanExecute = true)。

因为不像在 WinForms 中那样可以设置 enable=true,WPF 有这个 CanExecute 和 Executed 命令绑定(bind)。

在我的 XAML 中:

</UserControl.Resources>

<UserControl.CommandBindings>

<CommandBinding Command="Save" Executed="Save_Executed" CanExecute="Save_CanExecute">
</CommandBinding>

</UserControl.CommandBindings>

<Button Grid.Row="4" Content="Save" Command="Save" HorizontalAlignment="Right" Margin="5" Name="saveButton" VerticalAlignment="Center" Width="75" >

代码:

private void Save_Executed(object sender, ExecutedRoutedEventArgs e)
{

}
private void Save_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = businessContractorViewModel != null && businessContractorViewModel.Entry != null;
}

private void businessDataGrid_CurrentCellChanged(object sender, EventArgs e)
{
//?? how to set savebutton e.canexecute = true?

}

最佳答案

我添加了一个触发器,当我完成编辑单元格时,设置 bool Edited= true 和回发,保存按钮将捕获更改并将其自身设置为启用。

我不知道它是否是最好的,但它对我有用。

private void Save_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = Edited;
}

private void businessDataGrid_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
Edited = true;
}

关于c# - DataGrid 保存按钮和 CanExecute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6133961/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com