public static void SetViewModelProperties(DependencyObject view, object parameter, object parentViewModel, IDocumentOwner documentOwner) { if (view == null) { return; } if (ViewModelExtensions.NotSetParameter == ViewModelExtensions.GetParameter(view) || parameter != null) { ViewModelExtensions.SetParameter(view, parameter); } if (ViewModelExtensions.GetParentViewModel(view) == null || parentViewModel != null) { ViewModelExtensions.SetParentViewModel(view, parentViewModel); } if (ViewModelExtensions.GetDocumentOwner(view) == null || documentOwner != null) { ViewModelExtensions.SetDocumentOwner(view, documentOwner); } }
public static void InitializeView(object view, object viewModel, object parameter, object parentViewModel, IDocumentOwner documentOwner = null) { if (documentOwner is DependencyObject) { documentOwner = DocumentOwnerWrapper.Create(documentOwner); } if (viewModel != null) { if (parameter != null) { viewModel.With(x => x as ISupportParameter).Do(x => x.Parameter = parameter); } if (parentViewModel != null) { viewModel.With(x => x as ISupportParentViewModel).Do(x => x.ParentViewModel = parentViewModel); } if (documentOwner != null) { viewModel.With(x => x as IDocumentContent).Do(x => x.DocumentOwner = documentOwner); } view.With(x => x as FrameworkElement).Do(x => x.DataContext = viewModel); view.With(x => x as ContentPresenter).Do(x => x.Content = viewModel); return; } if (!(view is DependencyObject)) { return; } if (ViewModelExtensions.NotSetParameter == ViewModelExtensions.GetParameter((DependencyObject)view) || parameter != null) { ViewModelExtensions.SetParameter((DependencyObject)view, parameter); } if (ViewModelExtensions.GetParentViewModel((DependencyObject)view) == null || parentViewModel != null) { ViewModelExtensions.SetParentViewModel((DependencyObject)view, parentViewModel); } if (ViewModelExtensions.GetDocumentOwner((DependencyObject)view) == null || documentOwner != null) { ViewModelExtensions.SetDocumentOwner((DependencyObject)view, documentOwner); } }
void ViewPresenter_Loaded(object sender, RoutedEventArgs e) { if (VisualTreeHelper.GetChildrenCount(this) == 0) { return; } var child = VisualTreeHelper.GetChild(this, 0); var parameter = ViewModelExtensions.GetParameter(this); var parentViewModel = ViewModelExtensions.GetParentViewModel(this); var documentOwner = ViewModelExtensions.GetDocumentOwner(this); if (parameter != null) { ViewModelExtensions.SetParameter((DependencyObject)child, parameter); } if (parentViewModel != null) { ViewModelExtensions.SetParentViewModel((DependencyObject)child, parentViewModel); } if (documentOwner != null) { ViewModelExtensions.SetDocumentOwner((DependencyObject)child, documentOwner); } }