namespace DevExpress.DevAV.ViewModels { using System; using DevExpress.Mvvm.DataAnnotations; using DevExpress.Mvvm.POCO; partial class EmployeeViewModel { public new bool IsNew() { return base.IsNew(); } EmployeeContactsViewModel contacts; public EmployeeContactsViewModel Contacts { get { if(contacts == null) contacts = EmployeeContactsViewModel.Create().SetParentViewModel(this); return contacts; } } protected override string GetTitle() { return Entity.FullName; } protected override void OnEntityChanged() { base.OnEntityChanged(); Contacts.Entity = Entity; this.RaiseCanExecuteChanged(x => x.ShowMap()); this.RaiseCanExecuteChanged(x => x.MailMerge()); this.RaiseCanExecuteChanged(x => x.Print(EmployeeReportType.Profile)); this.RaiseCanExecuteChanged(x => x.QuickLetter(EmployeeMailTemplate.ThankYouNote)); EventHandler handler = EntityChanged; if(handler != null) handler(this, EventArgs.Empty); } public event EventHandler EntityChanged; [Command] public void QuickLetter(EmployeeMailTemplate mailTemplate) { EmployeeCollectionViewModel collectionViewModel = ViewModelHelper.GetParentViewModel(this); if(collectionViewModel != null) collectionViewModel.QuickLetterCore(Entity, mailTemplate); } public bool CanQuickLetter(EmployeeMailTemplate mailTemplate) { if(Entity == null || IsNew()) return false; EmployeeCollectionViewModel collectionViewModel = ViewModelHelper.GetParentViewModel(this); return (collectionViewModel != null) && collectionViewModel.CanQuickLetterCore(Entity, mailTemplate); } [Command] public void Print(EmployeeReportType reportType) { EmployeeCollectionViewModel collectionViewModel = ViewModelHelper.GetParentViewModel(this); if(collectionViewModel != null) collectionViewModel.PrintCore(Entity, reportType); } public bool CanPrint(EmployeeReportType reportType) { if(Entity == null || IsNew()) return false; EmployeeCollectionViewModel collectionViewModel = ViewModelHelper.GetParentViewModel(this); return (collectionViewModel != null) && collectionViewModel.CanPrintProfileCore(Entity); } [Command] public void MailMerge() { EmployeeCollectionViewModel collectionViewModel = ViewModelHelper.GetParentViewModel(this); if(collectionViewModel != null) collectionViewModel.MailMerge(); } public bool CanMailMerge() { return (Entity != null) && !IsNew(); } [Command] public void ShowMap() { EmployeeCollectionViewModel collectionViewModel = ViewModelHelper.GetParentViewModel(this); if(collectionViewModel != null) collectionViewModel.ShowMapCore(Entity); } public bool CanShowMap() { if(Entity == null || IsNew()) return false; EmployeeCollectionViewModel collectionViewModel = ViewModelHelper.GetParentViewModel(this); return (collectionViewModel != null) && collectionViewModel.CanShowMapCore(Entity); } [Command] public void ShowMeeting() { EmployeeCollectionViewModel collectionViewModel = ViewModelHelper.GetParentViewModel(this); if(collectionViewModel != null) collectionViewModel.ShowMeeting(); } public bool CanShowMeeting() { return (Entity != null) && !IsNew(); } [Command] public void ShowTask() { EmployeeCollectionViewModel collectionViewModel = ViewModelHelper.GetParentViewModel(this); if(collectionViewModel != null) collectionViewModel.ShowTask(); } public bool CanShowTask() { return (Entity != null) && !IsNew(); } } public partial class SynchronizedEmployeeViewModel : EmployeeViewModel { protected override bool EnableSelectedItemSynchronization { get { return true; } } protected override bool EnableEntityChangedSynchronization { get { return true; } } } }