gpt4 book ai didi

c# - 订阅自跟踪实体 PropertyChanged 事件

转载 作者:行者123 更新时间:2023-11-30 18:40:02 25 4
gpt4 key购买 nike

我正在使用自跟踪实体编写 WPF 应用程序。我在禁用/启用我的“保存”按钮时遇到问题,因为我的模型值已更改。通常使用常规 Entity Framework 模型,我可以简单地订阅我的 ViewModel 中的 Model.PropertyChanged 事件,然后为我的保存按钮订阅 RaisePropertyChanged,它检查验证和禁用或启用我的保存按钮。

出于某种原因,对于 self 跟踪实体,我注意到 Model.PropertyChanged 事件被标记为 protected ,因此我无法在我的 ViewModel 中直接订阅它。有没有办法不修改T4模板就可以订阅这个事件??

    protected virtual void OnPropertyChanged(String propertyName)
{
if (ChangeTracker.State != ObjectState.Added && ChangeTracker.State != ObjectState.Deleted)
{
ChangeTracker.State = ObjectState.Modified;
}
if (_propertyChanged != null)
{
_propertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}

protected virtual void OnNavigationPropertyChanged(String propertyName)
{
if (_propertyChanged != null)
{
_propertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}

event PropertyChangedEventHandler INotifyPropertyChanged.PropertyChanged{ add { _propertyChanged += value; } remove { _propertyChanged -= value; } }
private event PropertyChangedEventHandler _propertyChanged;
private ObjectChangeTracker _changeTracker;

最佳答案

我一直只是修改模板使其不 protected 。这是一个模板是有原因的:)

我想另一种方法是在您的类上创建一个在内部引发 PropertyChanged 通知的公共(public)方法。

partial class MyModel
{
public RaiseEFPropertyChanged(string propertyName)
{
RaisePropertyChanged(propertyName);
}
}

关于c# - 订阅自跟踪实体 PropertyChanged 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8931496/

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