/// <summary> /// Called when the ViewModelKey property is changed on an UI element. /// </summary> /// <param name="d"></param> /// <param name="e"></param> private static void OnViewModelKeyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { FrameworkElement fe = d as FrameworkElement; if (fe != null) { string key = e.NewValue as string; if (!string.IsNullOrEmpty(key)) { IViewModelLocator vmLocator = ServiceLocator.Instance.Resolve <IViewModelLocator>(); object viewModel; if (vmLocator.TryLocate(key, out viewModel) && viewModel != null) { fe.DataContext = viewModel; } } } }