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;
    }
}

 

  •   jeej skype till 22h today..
  •   @VSTS @awscloud @chef @Docker @GooglePlay what are the 10 highest rated widgets?
  •   RT @wpschaub: Over 500 extensions in the VSTS/TFS marketplace https://t.co/pH64ZFRi2J
  •   @mitrik what is difference between code -&gt; files -&gt; history and code -&gt; commits? looks as same? https://t.co/NnA8lk1pTe
  •   @LocalJoost 😵
  •   the moment you need to install ms project....
  •   RT @coolcsh: And we have updated Visual Studio 2017 w/15.3 to for .NET Core 2, https://t.co/2y7Qj07QrB Core 2, .NET Standard 2: https://t.c…
  •   @JenMsft do you know what changed in the latest version of the mail app? the whats new web page is not beeing updated for long time..
  •   new windows sdk! https://t.co/qOlWLICyIB #uwp #uwpdev
  •   @tfsbuck this way doesnt take in consideration it can be set back to "new" because some blocking issues?