コード例 #1
0
ファイル: GalleryView.xaml.cs プロジェクト: GuocRen/Unigram
        private bool TrySet(GalleryContentView element, GalleryContent content)
        {
            if (object.Equals(element.Item, content))
            {
                return(false);
            }

            element.UpdateItem(this, content);
            return(true);
        }
コード例 #2
0
ファイル: GalleryView.xaml.cs プロジェクト: GuocRen/Unigram
        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]);
            }
        }