46、Snap

 

 

   

   把一个应用停靠在窗口一侧,只有 320px 宽,可以在另一侧放置其它的应用。这可以

让窗口同时显示两个应用。Snapping 操作可以在至少 1366px 宽的屏幕上可用。

       你可以使用快捷方式 : win + . 来循环切换不能的应用视图状态。

 左面停靠 “Bing 新闻”, 右侧停靠 “多米音乐”:

 

控制视图切换的代码:

在页面的构造函数中添加:

  
// 在窗口呈现或更改其呈现大小时发生。
Window.Current.SizeChanged += OnSizeChanged;

 

public void OnSizeChanged(object sender, Windows.UI.Core.WindowSizeChangedEventArgs args)
{
    // 获取当前应用程序视图的状态。
    switch (Windows.UI.ViewManagement.ApplicationView.Value)
    {
        case Windows.UI.ViewManagement.ApplicationViewState.Filled:

       // 使控件在两个状态间过渡。
        //   control:  要进行状态过渡的控件。
        //   stateName: 要过渡到的状态。
        //   useTransitions:  如果使用 VisualTransition 进行状态过渡,则为 true;否则为 false。
        // 返回结果:  如果控件已成功过渡到新状态,则为 true;否则为 false。
        public static bool GoToState(Control control, string stateName, bool useTransitions);
            VisualStateManager.GoToState(this, "Fill", false);
            break;
        case Windows.UI.ViewManagement.ApplicationViewState.FullScreenLandscape:
            VisualStateManager.GoToState(this, "Full", false);
            break;
        case Windows.UI.ViewManagement.ApplicationViewState.Snapped:
            VisualStateManager.GoToState(this, "Snapped", false);
            break;
        case Windows.UI.ViewManagement.ApplicationViewState.FullScreenPortrait:
            VisualStateManager.GoToState(this, "Portrait", false);
            break;
        default:
            break;
    }

    this.ShowCurrentViewState();
}

 

 //更改当前页面中的控件的显示状态 
 void ShowCurrentViewState()
 {
     this.UpdateUnsnapButtonState();

     ApplicationViewState currentState = Windows.UI.ViewManagement.ApplicationView.Value;

     if (currentState == ApplicationViewState.Snapped)
     {
          //"This app is snapped.";
     }
     else if (currentState == ApplicationViewState.Filled)
     {
          // "This app is in the fill state.";
     }
     else if (currentState == ApplicationViewState.FullScreenLandscape)
     {
          //"This app is full-screen landscape.";
     }
     else if (currentState == ApplicationViewState.FullScreenPortrait)
     {
          // "This app is full-screen portrait.";
     }
 }

 

 

尝试展开当前视图:

 //尝试展开以前已对齐的应用程序。
 // 返回结果: 如果该应用程序已成功展开,则为 true;如果展开尝试失败,则为 false。 
Windows.UI.ViewManagement.ApplicationView.TryUnsnap();

 

posted @ 2012-11-20 16:34  博琼  阅读(329)  评论(0编辑  收藏  举报