DataWindow中的Catel Cancel按钮

时间:2015-12-06 15:22:42

标签: 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);

1 个答案:

答案 0 :(得分:0)

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

请在official issue tracker报告此问题(使用repro)。

作为现在的解决方法,您可以覆盖CancelAsync方法并自行恢复其中的集合。 作为替代方案,您可以在VM中使用克隆集合,仅替换SaveAsync中的项目。