void UpdateFrameContent() { var model = Frame.CurrentContentViewModel; if (model == null) { if (_currentView != null) { _currentView.ViewModel = null; } View.Content = null; return; } if (_currentView?.ViewModel == model) { return; } var view = _currentView = (IBindableView)Service <IViewFactory> .Get().CreateView(model.GetPrefix(), model.GetViewStyle()); view.ViewModel = model; var ext = Frame.GetExtension <ICustomContentPresenter>(); if (ext != null) { ext.Present(View, view); } else { View.Content = view; } }
void OnNavigated(object sender, NavigationEventArgs e) { var view = e.Content as IBindableView; _currentView = view; if (view != null) { if (view.ViewModel != null) { _viewmodelsHistoryCache.Remove(view); _viewmodelsHistoryCache.Add(view, view.ViewModel); } else { if (_viewmodelsHistoryCache.TryGetValue(view, out ViewModel viewModel)) { view.ViewModel = viewModel; } } if (Frame.CurrentContentViewModel != view.ViewModel) { Frame.CurrentContentViewModel = view.ViewModel; } } Frame.CanGoBack = View.CanGoBack; Frame.CanGoForward = View.CanGoForward; }
public static Binding <TSource, TTarget> CreateFromBindableView(IBindableView <TSource> bindableView, TTarget target) { var binding = new Binding <TSource, TTarget>(bindableView.ViewModel, target); Bindings.SetBindableView(binding.BindingGroup, bindableView); return(binding); }
/// <summary> /// Set DataContext with reloads existing bindings. /// </summary> /// <param name="self">Bindable View.</param> /// <param name="dataContext">DataContext.</param> public static void ReloadDataContext(this IBindableView self, object dataContext) { self.DoDetachBindings(); self.SetDataContext(dataContext); self.DoAttachBindings(); }
protected override void OnBind() { View.JournalOwnership = JournalOwnership.OwnsJournal; _currentView = View.Content as IBindableView; SubscribeOnPropertyChanged(Frame, nameof(INavigationPanelFrame.CurrentContentViewModel), UpdateFrameContent); UpdateFrameContent(); Frame.GoBack = GoBack; Frame.GoForward = GoForward; View.Navigated += OnNavigated; }
public static void BindVM <TDescriptor>( IBindableView <IViewModelExpression <TDescriptor> > view, Action <IVMBinder <TDescriptor> > bindingConfigurator ) where TDescriptor : IVMDescriptor { if (DesignerProperties.GetIsInDesignMode((DependencyObject)view)) { return; } VMPropertyBinder <TDescriptor> binder = new VMPropertyBinder <TDescriptor>(); bindingConfigurator(binder); binder.Execute(); }
public void Init(IBindableView view) { var disposableObject = new DisposableObject(); disposableObject.Add(view.Binding()); IDisposable disposable = Disposable.Empty; disposable = view.DisposableNotification().Subscribe( _ => { disposable.Dispose(); disposableObject.Dispose(); DisposableObject obj; _dictionary.TryRemove(view, out obj); }); _dictionary.TryAdd(view, disposableObject); }
void OnSelectedItemsChanged() { var indexes = Frame.SelectedItemsIndexes; if (indexes.IsNullOrEmpty()) { if (_currentView == null) { return; } _currentView.ViewModel = null; View.Content = null; return; } var model = Frame.GetItemAtIndex(indexes[0]); var view = _currentView = (IBindableView)Service <IViewFactory> .Get().CreateView(model.GetPrefix(), model.GetViewStyle()); view.ViewModel = model; View.Content = view; }
public void Present(System.Windows.Controls.Frame frame, IBindableView content) { var currentContent = (UIElement)frame.Content; if (currentContent == content) { return; } Action complete = () => frame.Content = content; if (currentContent != null) { var fadeOutAnimation = new DoubleAnimation(0d, TimeSpan.FromSeconds(0.25)); fadeOutAnimation.Completed += (s, e) => complete(); currentContent.BeginAnimation(UIElement.OpacityProperty, fadeOutAnimation); } else { complete(); } }
public static IBinding <TSource, TTarget> Bind <TSource, TTarget>(this IBindableView <TSource> self, TTarget target) where TSource : class where TTarget : class { return(Binding <TSource, TTarget> .CreateFromBindableView(self, target)); }
internal static void SetBindableView(BindingGroup group, IBindableView bindableView) { BindableViews[group.Id] = new WeakReference <IBindableView>(bindableView); }