public void OnSelectedItemViewNameChanged() { if (SelectedItem == null) { return; } ModelViewForeignKey foreignKey = SelectedItem as ModelViewForeignKey; if (foreignKey == null) { return; } //foreignKey.IsAssinging = true; foreignKey.ViewName = SelectedItemViewName; //foreignKey.IsAssinging = false; if (foreignKey.ScalarProperties == null) { foreignKey.ScalarProperties = new ObservableCollection <ModelViewProperty>(); } if (string.IsNullOrEmpty(foreignKey.ViewName)) { return; } if (foreignKey.ScalarProperties.Count > 0) { return; } ModelViewSerializable modelViewSerializable = ModelViews.FirstOrDefault(mv => mv.ViewName == foreignKey.ViewName); if (modelViewSerializable.ScalarProperties == null) { return; } modelViewSerializable.ScalarProperties.ForEach(mv => foreignKey.ScalarProperties.Add(mv.ModelViewPropertySerializableAssingTo(new ModelViewProperty()))); bool isRequired = foreignKey.ModelViewForeignKeyIsRequired(); foreach (ModelViewProperty prop in foreignKey.ScalarProperties) { prop.IsRequiredInView = prop.IsRequiredInView && isRequired; } foreignKey.IsAssinging = true; foreignKey.ForeignKeyPrefix = foreignKey.NavigationName + modelViewSerializable.ViewName; foreignKey.IsAssinging = false; foreignKey.OnModelViewForeignKeyPrefixChanged(); foreignKey.ModelViewForeignKeyUpdateForeignKeyNameChain(); }