gpt4 book ai didi

wpf - EntityFramework EntityState 和数据绑定(bind)以及 INotifyPropertyChanged

转载 作者:行者123 更新时间:2023-12-04 06:55:36 26 4
gpt4 key购买 nike

我有一个显示 Shipment 实体的 WPF View 。我有一个包含星号的文本 block ,它将提醒用户记录已更改但未保存。我最初希望将此(使用转换器)的可见性绑定(bind)到 Shipment.EntityState 属性。

If value = EntityState.Modified Then
Return Visibility.Visible
Else
Return Visibility.Collapsed
End If

属性更新得很好,但 View 不知道更改。我需要知道的是,如何让 UI 接收属性更改的通知。如果无法做到这一点,是否有编写自己的 IsDirty 属性来处理编辑撤回的好方法(即,如果我更改属性的值,然后将其更改回原来的值,它不会被视为编辑,并且状态保持不变)。

一如既往,任何帮助将不胜感激。

科里

最佳答案

在为同样的问题苦苦挣扎之后,这里有一个对我有用的解决方案。
假设我有一个由 EF 生成的名为 Trip 的实体,我只需要通过部分类来扩展类,如下所示。当您需要强制刷新 EntytyState 属性时,例如在调用上下文的 SaveChanges 方法之后,RaiseEntityStateChanged 方法很有用。

partial class Trip
{
bool _forced = false;
System.Data.EntityState _lastState;

public Trip()
{
_lastState = EntityState;
this.PropertyChanged += (s, e) =>
{
if (_lastState != this.EntityState && e.PropertyName != "EntityState" || _forced)
{
_forced = false;
OnPropertyChanged("EntityState");
}

_lastState = this.EntityState;
};
}

public virtual void RaiseEntityStateChanged()
{
_forced = true;
OnPropertyChanged("EntityState");
}
}

关于wpf - EntityFramework EntityState 和数据绑定(bind)以及 INotifyPropertyChanged,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2603800/

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