private void InitializeCommands() { CreateCommand = new RelayCommand((data) => { BusinessEventManager.RaiseOnCreateRequested(Entity); }); AddNewRelatedCommand = new RelayCommand((data) => { var initialValues = new Dictionary <string, object>(); initialValues.Add(FilterRelationsip.RelatedAttribute, new EntityReferenceValue() { Id = FilterRelationsipId }); BusinessEventManager.RaiseOnCreateRequested(Entity, initialValues); }); AssociateCommand = new RelayCommand((data) => { var availableValues = GenericManager.RetrieveAll(FirstEntityAssociation); var availablesEntityReferences = availableValues .Values .Select(k => new EntityReferenceValue() { Id = k.Id, DisplayName = (string)k.Values["Name"] }) .ToList(); var initialEntityReferences = DataSetModel .Values .Select(k => new EntityReferenceValue() { Id = k.Id, DisplayName = (string)k.Values["Name"] }) .ToList(); var associateWindow = new MultipleAssociationWindow( $"Associate {FirstEntityAssociation}(s) to this {SecondEntityAssociation}", "Association", availablesEntityReferences, initialEntityReferences); associateWindow.ShowDialog(); var response = associateWindow.Response; if (response == MultipleAssociationWindow.MultipleAssociationResponse.OK) { var selectedValues = associateWindow.SelectedValues; foreach (var item in initialEntityReferences) { GenericManager.Disassociate(FilterRelationsip.MainEntity, FilterRelationsipId, FilterRelationsip.IntersectionName, FilterRelationsip.RelatedEntity, item.Id); } foreach (var item in selectedValues) { GenericManager.Associate(FilterRelationsip.MainEntity, FilterRelationsipId, FilterRelationsip.IntersectionName, FilterRelationsip.RelatedEntity, item.Id); } GetValues(); } }); RegisterCommand(AddNewRelatedCommand); RegisterCommand(CreateCommand); RegisterCommand(AssociateCommand); }