WPF:当绑定源被更新时,是否可以自动调用BeginEdit(IEditableObject)?

WPF:当绑定源被更新时,是否可以自动调用BeginEdit(IEditableObject)?,wpf,binding,ieditableobject,Wpf,Binding,Ieditableobject,我有一个实现IEditableObject的类,现在我想知道是否可以在绑定源更新时自动调用BeginEdit 有两种可能的情况: 对象通过数据库填充。在这种情况下,我不想调用BeginEdit。 对象由用户通过输入字段填充。在这种情况下,我希望在更新源时自动调用BeginEdit,因为我使用双向绑定和INotifyPropertyChanged。 我曾考虑在属性更改时调用BeginEdit,但这与第一个场景不太一致,因为我不希望在从数据库填充时调用BeginEdit。您需要一种方法来确定对象填充

我有一个实现IEditableObject的类,现在我想知道是否可以在绑定源更新时自动调用BeginEdit

有两种可能的情况:

对象通过数据库填充。在这种情况下,我不想调用BeginEdit。 对象由用户通过输入字段填充。在这种情况下,我希望在更新源时自动调用BeginEdit,因为我使用双向绑定和INotifyPropertyChanged。
我曾考虑在属性更改时调用BeginEdit,但这与第一个场景不太一致,因为我不希望在从数据库填充时调用BeginEdit。

您需要一种方法来确定对象填充的来源。枚举可能会这样做,然后在PropertyChanged中,您可以检查导致属性更改的原因,并基于此,您可以调用BeginEdit或不调用BeginEdit


现在,当从数据库更新时,将枚举设置为PopulateSource.database。当它因为用户更改而更改时,您将其设置为PopulateSource.user。现在,您可以检查您的属性更改此变量的状态,从而确定是否调用BeginEdit。

也许您可以为对象实现某种IsInDataBaseUpdate属性,设置后是否不点击BeginEdit?对不起,如果这听起来太愚蠢了。。。也许我错过了什么。@Anvaka:我也在考虑,但这是我试图避免的,因为这样做我不会得到我想要的,而且仍然需要设置属性,在这种情况下,我可以直接调用BeginEdit。如果可能的话,我想尽可能自动地调用BeginEdit。目前我正在考虑使用BindingGroup.BeginEdit、converter或子类化Bidning。
Enum PopulateSource
{
   Database = 0,
   User
}