数据窗口中的 Catel 取消按钮

标签 catel datawindow cancel-button

然后我修改“ProductName”并按“取消”按钮属性重置为传递的参数。但是,如果我修改 ProgramIds(添加或删除)并按“取消”按钮,则集合未设置为通过。为什么?

我在 ViewModel 中有:

[Model]
[Catel.Fody.Expose("ProductName")]
[Catel.Fody.Expose("ProgramIds")]
Public ProgramDataModel DataModel
  {
     get { return GetValue<ProgramDataModel>(DataModelProperty); }
     set { SetValue(DataModelProperty, value); }
  }

在模型中:

public string ProductName
       {
           get { return GetValue<string>(ProductNameProperty); }
           set { SetValue(ProductNameProperty, value); }
       }
    public static readonly PropertyData ProductNameProperty = RegisterProperty(nameof(ProductName), typeof(string));

    public ObservableCollection<ProgramIDModel> ProgramIds
           {
               get { return GetValue<ObservableCollection<ProgramIDModel>>(ProgramIdsProperty); }
               set { SetValue(ProgramIdsProperty, value); }
           }
    public static readonly PropertyData ProgramIdsProperty = RegisterProperty(nameof(ProgramIds), typeof(ObservableCollection<ProgramIDModel>));

在 MainViewModel 中:

var viewModel = new ProductWindowViewModel(DataViewModel);
await _uiVisualizerService.ShowDialogAsync(viewModel);

最佳答案

Catel 使用 IEditableObject 来在用户点击取消时恢复状态。因为您使用的是 ID 集合,Catel 在重置集合时可能会遇到一些问题。

请在 official issue tracker 报告此问题(带重现) .

作为目前的解决方法,您可以重写 CancelAsync 方法并自行恢复集合。 或者作为替代方案,您可以在 VM 中使用克隆的集合,并且只替换 SaveAsync 中的项目。

关于数据窗口中的 Catel 取消按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34119045/

相关文章:

c# - [Catel]如何将带有构造函数参数的ViewModel传递给TabServiceExtensions方法?

wpf - 卡特尔延迟加载包含 View / View 模型的装配体

sybase - 如何在数据窗口中创建类似甘特图的图表(Powerbuilder)

powerbuilder - powerbuilder的datawindow如何执行insert命令

inno-setup - 创新设置 : Exiting when clicking on Cancel without confirmation

c# - 如何为一个耗时的函数停止一个线程

c# - Catel Person应用示例

wpf - 在Catel MVVM WPF中使用TabControl时的性能

Powerbuilder Datawindow 交叉表显示

c# - C# 和 XAML 中的取消按钮功能