private bool TrySet(GalleryContentView element, GalleryContent content) { if (object.Equals(element.Item, content)) { return(false); } element.UpdateItem(this, content); return(true); }
private void PrepareNext(int direction, bool initialize = false) { var viewModel = ViewModel; if (viewModel == null) { return; } GalleryContentView previous = null; GalleryContentView target = null; GalleryContentView next = null; if (Grid.GetColumn(Element1) == direction + 1) { previous = Element0; target = Element1; next = Element2; } else if (Grid.GetColumn(Element0) == direction + 1) { previous = Element2; target = Element0; next = Element1; } else if (Grid.GetColumn(Element2) == direction + 1) { previous = Element1; target = Element2; next = Element0; } Grid.SetColumn(target, 1); Grid.SetColumn(previous, 0); Grid.SetColumn(next, 2); var index = viewModel.SelectedIndex; if (index < 0 || viewModel.Items.IsEmpty()) { return; } var set = TrySet(target, viewModel.Items[index]); TrySet(previous, index > 0 ? viewModel.Items[index - 1] : null); TrySet(next, index < viewModel.Items.Count - 1 ? viewModel.Items[index + 1] : null); if (initialize) { TrySet(Preview, viewModel.Items[index]); } if (UIViewSettings.GetForCurrentView().UserInteractionMode == UserInteractionMode.Mouse) { Transport.PreviousVisibility = index > 0 ? Visibility.Visible : Visibility.Collapsed; Transport.NextVisibility = index < viewModel.Items.Count - 1 ? Visibility.Visible : Visibility.Collapsed; } else { Transport.PreviousVisibility = Visibility.Collapsed; Transport.NextVisibility = Visibility.Collapsed; } #if GALLERY_EXPERIMENTAL LayoutRoot.ColumnDefinitions[0].Width = new GridLength(0, index > 0 ? GridUnitType.Auto : GridUnitType.Pixel); LayoutRoot.ColumnDefinitions[2].Width = new GridLength(0, index < viewModel.Items.Count - 1 ? GridUnitType.Auto : GridUnitType.Pixel); #endif if (set) { Dispose(); viewModel.OpenMessage(viewModel.Items[index]); } }