Панель приложений Windows 8 на выбранном элементе (например, на экране запуска)

То, что я хочу достичь в своем приложении, такое же, как и то, что окна делали на своем начальном экране. Когда вы выбираете элемент, откройте панель приложений и покажите больше элементов. Когда вы просто открываете панель приложений, ничего не выбирая, не показывайте эти элементы.

Пока все хорошо и работает так, как я хочу. Но есть проблема, которую я не могу решить. Когда вы выбираете элемент на начальном экране, вы не можете закрыть панель приложений, щелкнув правой кнопкой мыши в любом месте экрана. Вы должны отменить выбор пункта.

Я просто не могу понять, как отключить этот правый клик, чтобы закрыть панель приложений. Потому что тогда я нахожусь в состоянии, когда у меня есть выбранный элемент, но нет панели приложений. Я не хочу этого...

Заранее спасибо!


person SamVerschueren    schedule 11.03.2013    source источник
comment
Может ли пользователь выбрать только один элемент или несколько элементов в вашем сценарии?   -  person Jennifer Marsman - MSFT    schedule 12.03.2013


Ответы (3)


Существует свойство с именем IsSticky

это можно использовать, чтобы предотвратить крах панели приложений.

другой вариант, который у вас есть, — подключиться к Closed событие и принудительно открыть его заново.

Основываясь на предоставленном вами экране, известном как пользовательский интерфейс Metro :), я бы сказал, что создайте страницу, на которой просто размещаются другие плитки. Я сделал нечто подобное в одном из своих приложений, взгляните на http://apps.microsoft.com/windows/en-gb/app/cineworld/7adfde16-33c3-4b51-b758-00366325288d.

Взгляните на Coding4Fun или Каллисто

person Hermit Dave    schedule 11.03.2013
comment
Это работает не совсем так, как я хочу. Когда пользователь щелкнет правой кнопкой мыши, панель приложения исчезнет. IsSticky только гарантирует, что панель приложений не закроется, когда пользователь нажмет левую кнопку мыши. - person SamVerschueren; 11.03.2013
comment
другой вариант - использовать закрытое событие и снова открыть. никаких других вариантов. по крайней мере, не использовать панель приложений - person Hermit Dave; 11.03.2013
comment
Любая идея о том, как Windows реализовала это на экране запуска? Я готов использовать другой компонент, если он работает лучше в моем случае... - person SamVerschueren; 11.03.2013
comment
Я понятия не имею, что вы имеете в виду ... экран запуска? скриншот того, что вы имеете в виду, может действительно помочь мне .. сегодня в очень медленном состоянии: | - person Hermit Dave; 11.03.2013
comment
Вот скриншот экрана запуска, о котором я говорю. Если вы нажмете плитку правой кнопкой мыши, появится панель приложений, и ее невозможно удалить, пока вы не отмените выбор плитки. - person SamVerschueren; 12.03.2013

Задайте свойство AppBar IsSticky="true" и обработайте событие RightTapped в GridView/ListView, а в обработчике событий установите e.Handled = true;< /strong>
Это предотвратит перенаправленное событие щелчка правой кнопкой мыши/пролистывания и не закроет панель приложений.

person Martin Suchan    schedule 16.05.2013

Вы можете переопределить функцию hide() панели приложений и заменить ее чем-то вроде этого:

appBar.hide = function () {
        /// <signature helpKeyword="WinJS.UI.AppBar.hide">
        /// <summary locid="WinJS.UI.AppBar.hide">
        /// Hides the AppBar, if visible, regardless of other state
        /// </summary>
        /// </signature>
        // Just wrap the private one
        var listView = document.getElementById("yourListView").winControl;
        var count = listView.selection.count();

        if(count <1)
            this._hide();
}

Это не лучший обходной путь, но он работает как шарм :)

person joshnikhil234    schedule 15.06.2013