gpt4 book ai didi

数据窗口中的 Catel 取消按钮

转载 作者:行者123 更新时间:2023-12-05 07:52:02 25 4
gpt4 key购买 nike

然后我修改“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/

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