private void BladeOnVisibilityChanged(object sender, Visibility visibility) { var blade = sender as BladeItem; if (visibility == Visibility.Visible) { Items.Remove(blade); Items.Add(blade); BladeOpened?.Invoke(this, blade); ActiveBlades.Add(blade); UpdateLayout(); GetScrollViewer()?.ChangeView(_scrollViewer.ScrollableWidth, null, null); return; } BladeClosed?.Invoke(this, blade); ActiveBlades.Remove(blade); }
private async void BladeOnVisibilityChanged(object sender, Visibility visibility) { var blade = sender as BladeItem; if (visibility == Visibility.Visible) { if (Items == null) { return; } var item = ItemFromContainer(blade); Items.Remove(item); Items.Add(item); BladeOpened?.Invoke(this, blade); ActiveBlades.Add(blade); UpdateLayout(); // Need to do this because of touch. See more information here: https://github.com/CommunityToolkit/WindowsCommunityToolkit/issues/760#issuecomment-276466464 var dispatcherQueue = DispatcherQueue.GetForCurrentThread(); await dispatcherQueue.EnqueueAsync( () => { GetScrollViewer()?.ChangeView(_scrollViewer.ScrollableWidth, null, null); }, DispatcherQueuePriority.Low); return; } BladeClosed?.Invoke(this, blade); ActiveBlades.Remove(blade); var lastBlade = ActiveBlades.LastOrDefault(); if (lastBlade != null && lastBlade.TitleBarVisibility == Visibility.Visible) { lastBlade.IsExpanded = true; } }
private static void ToggleBlade(object sender, TappedRoutedEventArgs tappedRoutedEventArgs) { Button pressedButton = sender as Button; string bladeName = GetToggleBlade(pressedButton); BladeControl container = pressedButton.FindVisualAscendant <BladeControl>(); var blade = container.Blades.FirstOrDefault(_ => _.BladeId == bladeName); if (blade == null) { throw new KeyNotFoundException($"Could not find a blade with ID {bladeName}"); } if (blade.IsOpen) { blade.IsOpen = false; BladeClosed?.Invoke(container, blade); } else { blade.IsOpen = true; BladeOpened?.Invoke(container, blade); } }
private async void BladeOnVisibilityChanged(object sender, Visibility visibility) { var blade = sender as BladeItem; if (visibility == Visibility.Visible) { if (Items == null) { return; } Items.Remove(blade); Items.Add(blade); BladeOpened?.Invoke(this, blade); ActiveBlades.Add(blade); UpdateLayout(); // Need to do this because of touch. See more information here: https://github.com/Microsoft/UWPCommunityToolkit/issues/760#issuecomment-276466464 await Dispatcher.RunAsync(CoreDispatcherPriority.Low, () => { GetScrollViewer()?.ChangeView(_scrollViewer.ScrollableWidth, null, null); }); return; } BladeClosed?.Invoke(this, blade); ActiveBlades.Remove(blade); var lastBlade = ActiveBlades.LastOrDefault(); if (lastBlade != null && lastBlade.TitleBarVisibility == Visibility.Visible) { lastBlade.IsExpanded = true; } }