mirror of
https://github.com/DevExpress/netcore-winforms-demos.git
synced 2025-12-22 17:39:24 +00:00
40 lines
1.7 KiB
C#
40 lines
1.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Windows;
|
|
using DevExpress.Mvvm;
|
|
using DevExpress.Mvvm.DataAnnotations;
|
|
using DevExpress.Mvvm.POCO;
|
|
using DevExpress.Mvvm.DataModel;
|
|
|
|
namespace DevExpress.DevAV.Common.ViewModel {
|
|
partial class SingleObjectViewModel<TEntity, TPrimaryKey, TUnitOfWork>
|
|
where TEntity : class
|
|
where TUnitOfWork : IUnitOfWork {
|
|
protected virtual bool EnableSelectedItemSynchronization {
|
|
get { return false; }
|
|
}
|
|
protected override void OnInitializeInRuntime() {
|
|
base.OnInitializeInRuntime();
|
|
if(EnableSelectedItemSynchronization)
|
|
SubscribeSelectedItemSynchronizationMessage();
|
|
}
|
|
protected void SubscribeSelectedItemSynchronizationMessage() {
|
|
Messenger.Default.Register<SelectedItemSynchronizationMessage<TEntity>>(this, x => OnSelectedItemSynchronizationMessage(x));
|
|
}
|
|
protected virtual void OnSelectedItemSynchronizationMessage(SelectedItemSynchronizationMessage<TEntity> m) {
|
|
if(m.Entity == null) Entity = null;
|
|
else OnParameterChanged(Repository.GetPrimaryKey(m.Entity));
|
|
}
|
|
protected virtual bool EnableEntityChangedSynchronization {
|
|
get { return false; }
|
|
}
|
|
protected override void OnEntityMessage(EntityMessage<TEntity, TPrimaryKey> msg) {
|
|
if(EnableEntityChangedSynchronization && msg.MessageType == EntityMessageType.Changed) {
|
|
if(object.Equals(msg.PrimaryKey, PrimaryKey))
|
|
Reload();
|
|
}
|
|
base.OnEntityMessage(msg);
|
|
}
|
|
}
|
|
} |