亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Windows > 正文

Windows 8 開發之設置合約的介紹

2019-11-28 03:37:39
字體:
來源:轉載
供稿:網友

   合約:合約就像一個或多個程序之間的協議。合約定義了應用程序在與其它程序或Windows 進行交互時必須遵循的一些約定。我們對一個應用的一些設置,常用的可以放到AppBar上面,如果不是很常用的,比如應用程序的主題顏色,可以放到設置合約,也就是通過超級菜單調出來的設置面板上。下面就介紹如何把我們的設置選項添加的設置面板中。

1.引入命名空間:Windows.UI.ApplicationSettings;
2.注冊設置事件

  在程序啟動的時候,App.xaml.cs文件中有一個名為OnLaunched的方法會被調用。在OnLaunched的開頭,我創建了一個event handler,當用戶打開SettingsPane時,會被調用。你自定義的設置畫面直到用戶打開Settings Charm時,才會被加載。當你“暫停”你的程序或者游戲,如果設置面板被打開了,那么這個event也會被調用。

復制代碼
代碼如下:

protected override void OnLaunched(LaunchActivatedEventArgs args)
{
SettingsPane.GetForCurrentView().CommandsRequested += App_CommandsRequested; //注冊設置事件
Frame rootFrame = Window.Current.Content as Frame;</p><p> // 不要在窗口已包含內容時重復應用程序初始化,
// 只需確保窗口處于活動狀態
if (rootFrame == null)
{
// 創建要充當導航上下文的框架,并導航到第一頁
rootFrame = new Frame();</p><p> if (args.PreviousExecutionState == ApplicationExecutionState.Terminated)
{
//TODO: 從之前掛起的應用程序加載狀態
}</p><p> // 將框架放在當前窗口中
Window.Current.Content = rootFrame;
}</p><p> if (rootFrame.Content == null)
{
// 當未還原導航堆棧時,導航到第一頁,
// 并通過將所需信息作為導航參數傳入來配置
// 參數
if (!rootFrame.Navigate(typeof(MainPage), args.Arguments))
{
throw new Exception("Failed to create initial page");
}
}
// 確保當前窗口處于活動狀態
Window.Current.Activate();
}


復制代碼
代碼如下:

void App_CommandsRequested(SettingsPane sender, SettingsPaneCommandsRequestedEventArgs args)
{
SettingsCommand cmd = new SettingsCommand("關于", "關于應用", (handle) =>
{
Popup popup = CreatePopup.Create(new AboutPage(),346);
popup.IsOpen = true;

});
SettingsCommand cmd1 = new SettingsCommand("主題", "主題顏色", (handle) =>
{
Popup popup = CreatePopup.Create(new ThemColor(), 346);
popup.IsOpen = true;
});
args.Request.ApplicationCommands.Add(cmd);
args.Request.ApplicationCommands.Add(cmd1);
}

  如上代碼所示,我創建了一個SettingsCommand對象,并提供了三個值。除非你需要在程序運行時修改SettingsPane,否則第一個參數值并不太重要。它就是一個簡單ID,隨后可以通過這個ID可以引用到SettingsCommand。標簽“主題顏色”可以是任意的字符串,不過我建議不要超過40個字符,否則會被截斷。最后一個參數值是這個command的handler。當用戶輕觸lable 時,會執行該handler。在這里,我用lambada 表達式來簡化該處理。表達式里面,我創建了一個Popup控件,并將其IsOpen 屬性設置為true。改變這個屬性,可以使Popup顯示在屏幕上。

3.  創建Popup控件
  首先是一個自定義的UserControl,之后我會介紹到該UserControl,現在只需要明白AboutPage.xaml是一個UserControl即可,AboutPage.xaml是用于Popup控件中的。

復制代碼
代碼如下:

public class CreatePopup
{
public static Popup Create(UserControl element, double width)
{
Popup p = new Popup();
p.Child = element;
p.IsLightDismissEnabled = true;
p.ChildTransitions = new TransitionCollection();
p.ChildTransitions.Add(new PaneThemeTransition() //聲明邊緣 UI(如應用程序欄)的邊緣轉換位置。
{
Edge = (SettingsPane.Edge == SettingsEdgeLocation.Right) ?
EdgeTransitionLocation.Right :
EdgeTransitionLocation.Left
});//檢查SettingsPane的edge,有些國家的超級菜單在左邊。</p><p> element.Width = width;
element.Height = Window.Current.Bounds.Height;
p.SetValue(Canvas.LeftProperty, SettingsPane.Edge == SettingsEdgeLocation.Right ? (Window.Current.Bounds.Width - width) : 0);//設置距離左邊的邊距
p.SetValue(Canvas.TopProperty, 0);
return p;
}
}

   上面定義了UserControl的高度和寬度,并將element賦值給Popup控件p。(這里建議的寬度是346或者646,高度應該是用戶屏幕的完整高度,參考:設計指南)。最后,設置了popup的left 和top 屬性,這樣popup將會出現在適當的位置,然后將p返回給SettingsCommand。
   注解:Windows 8可以根據機器的本地化設置而有不同的變化。如果有的國家的語言是從右往左讀的,那么Charms  Bar的實際位置是在屏幕的左邊,而不是右
邊。這就是為什么我在給popup的LeftProperty賦值時,檢查SettingsPane的“edge”。

4. 創建UserControl
  添加一個新的UserControl項到工程中。為了跟之前的代碼想匹配,我將其命名為AboutPage.xaml。這個文件中代碼的內容完全取決于你。沒有任何的官方文檔約束。在UserControl中,可以通過在MainPage中定義一個共有字段public static MainPage Current來訪問MainPage頁面中控件,實現對頁面里面控件的屬性進行修改。

 如需源代碼,點擊SettingPanel_jb51net.zip下載

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产91ⅴ在线精品免费观看| 91九色精品视频| 91精品国产91久久久久久| 亚洲免费视频一区二区| 欧美国产乱视频| 精品中文字幕久久久久久| 国产精欧美一区二区三区| 在线成人一区二区| 亚洲视频第一页| 久久久免费在线观看| 美女福利视频一区| 日韩高清免费观看| 日韩一区在线视频| 色偷偷888欧美精品久久久| 国产成人精品久久二区二区| 国产精品久久久久久av福利软件| 日韩综合视频在线观看| 亚洲国产精品国自产拍av秋霞| 欧美亚洲激情在线| 国产69精品99久久久久久宅男| 日本不卡高字幕在线2019| 一区二区三区精品99久久| 欧美成人三级视频网站| 亚洲一级免费视频| 精品亚洲va在线va天堂资源站| 萌白酱国产一区二区| 欧美日韩国产999| 国产精品女人网站| 色伦专区97中文字幕| 欧美成人黄色小视频| 欧美色道久久88综合亚洲精品| 2019亚洲男人天堂| 91免费看视频.| 国产自产女人91一区在线观看| 国产精品999| 亚洲色在线视频| 欧美日韩国产综合新一区| 国产脚交av在线一区二区| 国产盗摄xxxx视频xxx69| 深夜精品寂寞黄网站在线观看| 国产亚洲a∨片在线观看| 91精品久久久久| 欧美精品在线免费观看| 毛片精品免费在线观看| 欧美日韩亚洲91| 亚洲国产精品热久久| 91香蕉亚洲精品| 亚洲最大的成人网| 国产精品久久久久久久久久久新郎| 午夜美女久久久久爽久久| 精品无人区太爽高潮在线播放| 久久久久久午夜| 日本免费在线精品| 韩日精品中文字幕| 日韩中文字幕精品视频| 国产精品电影久久久久电影网| 亚洲午夜久久久久久久| 精品久久中文字幕久久av| 亚洲男人av电影| 国产欧美日韩专区发布| 欧美电影在线免费观看网站| 日韩在线视频观看正片免费网站| 中文字幕精品www乱入免费视频| 亚洲欧美在线磁力| 国产精品三级久久久久久电影| 日韩视频免费在线观看| 日韩在线视频免费观看| 麻豆乱码国产一区二区三区| 国产精品ⅴa在线观看h| 日韩欧美亚洲国产一区| 欧美肥老太性生活视频| 亚洲免费av片| 一本一本久久a久久精品牛牛影视| 中文字幕综合在线| 久久久这里只有精品视频| 亚洲欧美日韩精品| 日本不卡免费高清视频| 国产精品久久久久久久久久东京| 国产深夜精品福利| 亚洲欧美国产日韩中文字幕| 精品亚洲永久免费精品| 中文字幕在线看视频国产欧美在线看完整| 九九热精品视频| 日韩欧美第一页| 亚洲国产精品va在线| 国自在线精品视频| 日韩日本欧美亚洲| 中文国产亚洲喷潮| 国产精品久久久久9999| 日韩黄在线观看| 国产美女高潮久久白浆| 成人黄色生活片| 亚洲欧美日韩精品久久亚洲区| 91亚洲精品在线| 国产欧美精品一区二区| 国产亚洲综合久久| 国产精品一区二区性色av| 欧美日韩中文字幕在线| 欧美日韩国产成人在线观看| 亚洲欧美精品中文字幕在线| 日韩高清电影免费观看完整版| 国产精品入口日韩视频大尺度| 国产亚洲精品激情久久| 欧美黑人视频一区| 欧美丰满少妇xxxxx| 一区二区三区黄色| 亚洲天堂视频在线观看| 成人黄色短视频在线观看| 黑人极品videos精品欧美裸| 国产黑人绿帽在线第一区| 国产三级精品网站| 亚洲2020天天堂在线观看| 亚洲视屏在线播放| 日韩激情视频在线播放| 亚洲精品视频网上网址在线观看| 国产成人自拍视频在线观看| 国产在线视频一区| 日韩国产在线看| 68精品久久久久久欧美| 亚洲一区二区三区香蕉| 欧美一区二区三区图| 国产福利成人在线| 国产精品一久久香蕉国产线看观看| 欧美在线影院在线视频| 亚洲精品91美女久久久久久久| 亚洲欧洲日韩国产| 精品国产一区久久久| 成人精品一区二区三区电影免费| 亚洲嫩模很污视频| 亚洲精品国产精品自产a区红杏吧| 欧美大片免费观看在线观看网站推荐| 午夜美女久久久久爽久久| 91中文字幕在线观看| 日韩在线www| 欧美大片网站在线观看| 久久成人精品一区二区三区| 伊人一区二区三区久久精品| 国产女人精品视频| 国内精品一区二区三区四区| 亚洲最大成人免费视频| 精品小视频在线| 国产99久久精品一区二区永久免费| 国产精品免费电影| 午夜精品久久久久久久99黑人| 国产精品久久久久久av福利| 欧美黑人又粗大| 91精品国产自产在线| 中文字幕久热精品视频在线| 国产精品中文久久久久久久| 成人美女免费网站视频| 亚洲国产精品一区二区三区| 久久久久久久久久久免费| 久久久久久亚洲| 麻豆一区二区在线观看| 亚洲国产精品福利| 日韩在线精品一区| 欧美久久久精品| 国产欧美精品一区二区三区介绍| 欧美激情精品久久久久久变态| 亚洲人成在线播放| 亚洲欧美一区二区精品久久久| www.久久草.com| 欧洲午夜精品久久久| 国产精品三级美女白浆呻吟|