Вопрос по c# – Как программно ответить на Snap в Windows 8 Metro

11

Есть ли способ ответить на Snap in C # в приложении Metro? Когда одна из страниц привязана, мне нужно показать другую. Моя идея состоит в том, чтобы ответить на оснастку, перейдя на другую страницу.

я нашел

<code>var currentView = ApplicationLayout.GetForCurrentView();
currentView.LayoutChanged += new TypedEventHandler<ApplicationLayout, ApplicationLayoutChangedEventArgs>(currentView_LayoutChanged);
</code>

но похоже, что он больше не работает в Consumer Preview. Есть ли другой способ?

Принятый ответ устарел на момент предварительного просмотра. Jim McKeeth
Это хорошо описано в примере Snap:code.msdn.microsoft.com/windowsapps/Snap-Sample-2dc21ee3 Hans Passant

Ваш Ответ

3   ответа
5

ateChanged сейчас, а не LayoutChanged.

честно говоря, никто не сказал, что это неправильно ... просто устарело :)
Этот ответ устарел. Проверьте мой пост ниже для Предварительного просмотра
чтобы быть справедливым, это не неправильно ДЛЯ ПОТРЕБИТЕЛЯ ПОТРЕБИТЕЛЯ, который является первыми тремя словами ответа. Это не подходит для текущей версии, но это не то же самое, что быть неправильным.
9

я просто добавил еще кое-что в код WindowSizeChanged здесь:

    ApplicationViewState viewState = ApplicationView.Value;
    if (viewState == ApplicationViewState.Filled)
    {
        System.Diagnostics.Debug.WriteLine("viewState is Filled");
    }
    else if (viewState == ApplicationViewState.FullScreenLandscape)
    {
        System.Diagnostics.Debug.WriteLine("viewState is FullScreenLandscape");
    }
    else if (viewState == ApplicationViewState.Snapped)
    {
        System.Diagnostics.Debug.WriteLine("viewState is Snapped");
    }
    else if (viewState == ApplicationViewState.FullScreenPortrait)
    {
        System.Diagnostics.Debug.WriteLine("viewState is FullScreenPortrait");
    }
    else
    {
        System.Diagnostics.Debug.WriteLine("viewState is something unexpected");
    }

Что меня удивляет, так это то, что когда я копирую этот код-заполнитель на другую страницу, он дает коду ограниченный прямоугольник и, поскольку у меня не было & quot; использования Windows.UI.ViewManagement; & quot; тем не менее, когда я завис над нераспознанным кодом, он спросил: «Импортировать файл для вставленного кода?» Я предполагаю, что он (я не знаю, является ли он "VS" или Resharper) отслеживает вставленный код, так как его можно рассматривать с изогнутой или подкованной бровью.

Похоже, хорошее использование дляSwitch заявление.
'ApplicationViewState может быть изменен или недоступен для выпусков после Windows 8.1. Вместо этого запросите размеры окна непосредственно. & Apos; СНОВА УСТАРЕЛО.
Правда, это было бы предпочтительнее.
24

Это SizeChanged сейчас, а не ViewStateChanged.

Ранее ваше приложение делало что-то подобное для обработки изменений состояния представления:

using Windows.UI.ViewManagement;

// Register for the viewstatechanged event
ApplicationView.GetForCurrentView().ViewStateChanged += ViewStateChanged;    

private void ViewStateChanged(ApplicationView sender, ApplicationViewStateChangedEventArgs e)
{
     // Obtain view state from event payload
     ApplicationViewState myViewState = e.ViewState; 
}

Теперь приложения должны сделать это:

using Windows.UI.ViewManagement;

// Register for the window resize event
Window.Current.SizeChanged += WindowSizeChanged;     

private void WindowSizeChanged(object sender, Windows.UI.Core.WindowSizeChangedEventArgs e)
{
    // Obtain view state by explicitly querying for it
    ApplicationViewState myViewState = ApplicationView.Value;
}

Больше информации здесь

Похожие вопросы