public IDisposable AddAppBar(ReactiveAppBar appbar) { if (appbar == null) { throw new ArgumentNullException("appbar"); } grid.Children.Add(appbar); this.Log().Info("Appbar {0} added.", appbar.GetHashCode()); IDisposable dismiss = appbar.Opened.Merge(appbar.Closed).Subscribe(x => UpdateDismissLayerInteraction()); return Disposable.Create(() => { dismiss.Dispose(); grid.Children.Remove(appbar); this.Log().Info("Appbar {0} removed.", appbar.GetHashCode()); UpdateDismissLayerInteraction(); }); }
/// <summary> /// Called when the TopAppBar is changed. /// </summary> protected virtual void OnTopAppBarChanged(ReactiveAppBar oldTopAppBar, ReactiveAppBar newTopAppBar) { topAppBarDisposable.Dispose(); if (oldTopAppBar != null) { oldTopAppBar.DataContext = null; } if (newTopAppBar != null) { newTopAppBar.PlacementMode = PlacementMode.Top; newTopAppBar.HorizontalAlignment = HorizontalAlignment.Stretch; newTopAppBar.VerticalAlignment = VerticalAlignment.Top; if (newTopAppBar.DataContext == null) { newTopAppBar.SetBinding(ReactiveAppBar.DataContextProperty, dataContextBinding); } if (areAppBarsregistered) { topAppBarDisposable = ReactiveAppBarManager.Instance.AddAppBar(newTopAppBar); } } }