Door het GridView met de muis scrollen

Wanneer je naar het Start scherm van Windows 8 krijgt heeft deze een paar mooie unieke features die niet standaard met het GridView control meekomen.

 

Zo heb je type to search. Hiermee kan je gewoon gaan typen in het start scherm en vervolgens word de search geactiveerd. Hoe je dit in jouw app kan ontwikkelen heb ik hier beschreven: http://www.familie-smits.com/post/2012/08/12/Type-to-search-in-Windows-8.aspx

 

Een andere mooie feature is dat je in het startscherm kan scrollen door je muis aan de zijkant van scherm houden en dan de muis naar blijft bewegen wat dan het GridView laat scrollen.

 

Ik heb een uitbreiding gemaakt op het GridView dat dit mogelijk maakt in je eigen app, de code van het control:

 

public class VariableSizeGridView : GridView
{
    private ScrollViewer scrollViewer;

    public VariableSizeGridView()
    {
        MouseDevice.GetForCurrentView().MouseMoved += VariableSizeGridView_MouseMoved;
    }

    protected override void OnApplyTemplate()
    {
        base.OnApplyTemplate();
        scrollViewer = GetVisualChild<ScrollViewer>(this);
    }

    private void VariableSizeGridView_MouseMoved(MouseDevice sender, MouseEventArgs args)
    {
        if (Window.Current.CoreWindow.PointerPosition.X == Window.Current.CoreWindow.Bounds.Left)
        {
            if (args.MouseDelta.X < 0)
            {
                scrollViewer.ScrollToHorizontalOffset(scrollViewer.HorizontalOffset + args.MouseDelta.X);
            }
        }

        if (Window.Current.CoreWindow.PointerPosition.X == Window.Current.CoreWindow.Bounds.Right - 1)
        {
            if (args.MouseDelta.X > 0)
            {
                scrollViewer.ScrollToHorizontalOffset(scrollViewer.HorizontalOffset + args.MouseDelta.X);
            }
        }
    }

    private T GetVisualChild<T>(DependencyObject parent) where T : DependencyObject
    {
        T child = default(T);
        int numVisuals = VisualTreeHelper.GetChildrenCount(parent);
        for (int i = 0; i < numVisuals; i++)
        {
            DependencyObject v = (DependencyObject)VisualTreeHelper.GetChild(parent, i);
            child = v as T;
            if (child == null)
                child = GetVisualChild<T>(v);
            if (child != null)
                break;
        }
        return child;
    }
}

 

  •   RT @windowsblog: Windows Template Studio 1.1 released! https://t.co/qCLpESAvnB
  •   @JenMsft and does sqrt(4) - 2 gives now the right awnser?
  •   @Alex_A_Simons any updates on that what more is happening ? (2/2)
  •   @Alex_A_Simons long time ago you said the mess between msa and aad's would be fixed; first step was block to create msa on aad account. (1/2
  •   First pullrequest for https://t.co/5lEHH630Io :)
  •   @qmatteoq whosdown is great alternative for whatapps and comes from the store
  •   @jvintzel only for windows 10 s users or can other surface users get it too?
  •   RT @JenMsft: O hi there @Spotify 😊 #Windows10 https://t.co/nlJUgM7vVG https://t.co/boah802WgZ
  •   RT @tvgrimbergen: Awesome! Just extended our @MicrosoftTeams bot. Provide natural language input to initiate a leave request powered by @Ni…
  •   @lancewmccarthy kind of sad :/