Windows 8 - ¿Cómo descartar el teclado táctil?

Estoy desarrollando mi aplicación para Windows 8 en C #, y una cosa muy molesta es que el teclado táctil a veces permanece en la pantalla a pesar de que todos los cuadros de texto han perdido el enfoque.

Lei el articuloLibro blanco de lógica de despido de teclado, lo que explica que al cambiar de control a control, el teclado puede permanecer encendido aunque un control no acepte la entrada del teclado. Este sería mi caso porque todos mis contenidos están alojados en un GridView o un ListView. Cuando el usuario hace clic en cualquier elemento de la pantalla, el toque caerá en estos controles. Esto es muy molesto porque el teclado ocupa la mitad de la pantalla y no hay forma de cerrar el teclado.

He intentado configurar el cuadro de texto para que se deshabilite y no ha afectado. La única forma de eliminar el teclado es enfocarse en un botón, que es extremadamente intrépido.

Pensé que tenía que hacer algo con el "AutomationPeer", pero no tengo claro qué hacer exactamente. ¿Hay una manera de anular este comportamiento?

Editar: Me di cuenta de esto. El objetivo es cambiar al tipo de control del elemento GridView y GridView no enumerados en elpapel blanco. Aquí está el código de la cuadrícula que hice que me permitió descartar el teclado:

public class KeyboardUnfocusableGridView : GridView
{
    private class KeyboardUnfocusableGridViewAutomationPeer : GridViewAutomationPeer
    {
        public KeyboardUnfocusableGridViewAutomationPeer(GridView owner)
            : base(owner)
        {
        }

        protected override AutomationControlType GetAutomationControlTypeCore()
        {
            return AutomationControlType.Custom;
        }

    }

    private class KeyboardUnfocusableGridViewItemAutomationPeer : GridViewItemAutomationPeer
    {
        public KeyboardUnfocusableGridViewItemAutomationPeer(GridViewItem owner)
            : base(owner)
        { }

        protected override AutomationControlType GetAutomationControlTypeCore()
        {
            return AutomationControlType.Custom;
        }

    }

    private class KeyboardUnfocusableGridViewItem : GridViewItem
    {
        protected override AutomationPeer OnCreateAutomationPeer()
        {
            var baseItem = base.OnCreateAutomationPeer();
            return new KeyboardUnfocusableGridViewItemAutomationPeer(this);
        }


    }

    protected override AutomationPeer OnCreateAutomationPeer()
    {
        var baseItem = base.OnCreateAutomationPeer();
        return new KeyboardUnfocusableGridViewAutomationPeer(this);
    }

    protected override Windows.UI.Xaml.DependencyObject GetContainerForItemOverride()
    {
        return new KeyboardUnfocusableGridViewItem();
    }
}

Es desafortunado que tenga que escribir tanto código para hacer algo simple. Esto definitivamente no es óptimo ya que tendría que hacer esto para cada uno de losItemsControl que necesito usar.

Respuestas a la pregunta(1)

Su respuesta a la pregunta