首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataWindow中的Cancel按钮

DataWindow中的Cancel按钮
EN

Stack Overflow用户
提问于 2015-12-06 15:22:41
回答 2查看 251关注 0票数 3

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

我在ViewModel上有:

代码语言:javascript
复制
[Model]
[Catel.Fody.Expose("ProductName")]
[Catel.Fody.Expose("ProgramIds")]
Public ProgramDataModel DataModel
  {
     get { return GetValue<ProgramDataModel>(DataModelProperty); }
     set { SetValue(DataModelProperty, value); }
  }

在模型中:

代码语言:javascript
复制
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中:

代码语言:javascript
复制
var viewModel = new ProductWindowViewModel(DataViewModel);
await _uiVisualizerService.ShowDialogAsync(viewModel);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-06 15:47:20

Catel使用IEditableObject来恢复用户单击cancel时的状态。由于您使用的是ids集合,Catel在重置集合时可能会出现一些问题。

请在官方问题跟踪器上报告此问题(并附上副本)。

作为目前的解决办法,您可以重写CancelAsync方法并自己在那里还原集合。或者,作为替代,您可以在VM中使用一个克隆集合,并且只替换SaveAsync中的项。

票数 0
EN

Stack Overflow用户

发布于 2022-03-14 13:19:43

面对与ObservableCollection完全相同的问题,只需将[Serializable]属性添加到模型类中即可解决。

代码语言:javascript
复制
[Serializable]
public class ProgramDataModel:ValidatableModelBase
{
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34119045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档