using Microsoft.Practices.ServiceLocation; using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; using System.Windows; using Tango.BL; using Tango.BL.Entities; using Tango.MachineStudio.Common; using Tango.MachineStudio.Common.StudioApplication; using Tango.SharedUI; namespace Tango.MachineStudio.DB.ViewModels { public class MainViewVM : ViewModel, IModuleRequestListener { public MainViewVM() : base() { } public void OnRequestModule(IStudioModule module, object args) { if (module is DBModule && args != null && args is IObservableEntity) { String vmName = args.GetType().Name + "sViewVM"; Type vmType = Assembly.GetAssembly(typeof(MainViewVM)).GetTypes().SingleOrDefault(x => x.Name == vmName); if (vmType == null) { vmName = args.GetType().BaseType.Name + "sViewVM"; vmType = Assembly.GetAssembly(typeof(MainViewVM)).GetTypes().SingleOrDefault(x => x.Name == vmName); } if (vmType != null) { var vm = ServiceLocator.Current.GetInstance(vmType); vmType.GetProperty("SelectedEntity").SetValue(vm, args); vmType.GetMethod("OnEdit", BindingFlags.Instance | BindingFlags.NonPublic).Invoke(vm, new object[] { }); } } } } }