Windows8(C#) 2ページテンプレート

  MainPage : xaml / cs



画面定義のメインは、WebView となっています。その下にある Rectangle は、WebView の状態をキャプチャして、クリックしてもなにも起こらないように見せる為のものです。

この画面構成は、以下のページで説明されていたたものを利用しています。

デベロッパーセンター(Windows ストアアプリ)

クイック スタート: アプリ バーの追加

01.<Page
02.    x:Class="App74.MainPage"
03.    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
04.    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
05.    xmlns:local="using:App74"
06.    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
07.    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
08.    mc:Ignorable="d">
09. 
10.    <Page.BottomAppBar>
11.        <AppBar
12.            IsSticky="True"
13.            x:Name="bottomAppBar"
14.            Padding="10,0,10,0"
15.            Opened="AppBar_Opened" Closed="AppBar_Closed">
16.            <Grid>
17.                <StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
18.                    <Button Style="{StaticResource EditAppBarButtonStyle}" />
19.                    <Button Style="{StaticResource RemoveAppBarButtonStyle}" />
20.                    <Button Style="{StaticResource AddAppBarButtonStyle}" />
21.                </StackPanel>
22.                <StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
23.                    <Button Style="{StaticResource RefreshAppBarButtonStyle}" Click="Refresh_Click" />
24.                    <Button Style="{StaticResource HelpAppBarButtonStyle}" Click="Button_Click_1" />
25.                </StackPanel>
26.            </Grid>
27.        </AppBar>
28.    </Page.BottomAppBar>
29. 
30.    <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
31.        <Border BorderBrush="Gray" BorderThickness="2" Margin="100,20,100,20">
32.            <Grid>
33.                <WebView x:Name="contentView" />
34.                <Rectangle x:Name="contentViewRect"/>
35.            </Grid>
36.        </Border>
37.    </Grid>
38.</Page>
AppBar_Opened での処理が目的の処理です。AppBar を開くと WebView がその上にかぶさってしまうので、Rectangle にその時の状態を書き込んで AppBar の操作の邪魔をしないようにしています。また、その際 AppBar 以外の場所をクリックしてもなにも起きないように、IsSticky="True" となっています。
ユーザーがアプリの操作をしているときにアプリ バーを表示させたままにするには、Extensible Application Markup Language (XAML) で、IsSticky プロパティを true に設定します。
Button_Click_1 で BasicPage1 へ移動していますが、this.Frame.Navigate(typeof(BasicPage1)) で処理されています。

Navigate は、Frame コントロールのメソッドですが、Frame は Page コントロールのプロパティです。
01.using System;
02.using System.Collections.Generic;
03.using System.IO;
04.using System.Linq;
05.using Windows.Foundation;
06.using Windows.Foundation.Collections;
07.using Windows.UI.Xaml;
08.using Windows.UI.Xaml.Controls;
09.using Windows.UI.Xaml.Controls.Primitives;
10.using Windows.UI.Xaml.Data;
11.using Windows.UI.Xaml.Input;
12.using Windows.UI.Xaml.Media;
13.using Windows.UI.Xaml.Navigation;
14. 
15.namespace App74
16.{
17.    /// <summary>
18.    /// それ自体で使用できる空白ページまたはフレーム内に移動できる空白ページ。
19.    /// </summary>
20.    public sealed partial class MainPage : Page
21.    {
22.        public MainPage()
23.        {
24.            this.InitializeComponent();
25.        }
26. 
27.        /// <summary>
28.        /// このページがフレームに表示されるときに呼び出されます。
29.        /// </summary>
30.        /// <param name="e">このページにどのように到達したかを説明するイベント データ。Parameter
31.        /// プロパティは、通常、ページを構成するために使用します。</param>
32.        protected override void OnNavigatedTo(NavigationEventArgs e)
33.        {
34.        }
35. 
36.        private void Button_Click_1(object sender, RoutedEventArgs e)
37.        {
38.            this.Frame.Navigate(typeof(BasicPage1));
39.        }
40.        private void AppBar_Opened(object sender, object e)
41.        {
42.            WebViewBrush wvb = new WebViewBrush();
43.            wvb.SourceName = "contentView";
44.            wvb.Redraw();
45.            contentViewRect.Fill = wvb;
46.            contentView.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
47.        }
48. 
49.        private void AppBar_Closed(object sender, object e)
50.        {
51.            contentView.Visibility = Windows.UI.Xaml.Visibility.Visible;
52.            contentViewRect.Fill = new SolidColorBrush(Windows.UI.Colors.Transparent);
53.        }
54. 
55.        private void Refresh_Click(object sender, RoutedEventArgs e)
56.        {
57.            contentView.Navigate(new Uri("http://www.contoso.com"));
58.            bottomAppBar.IsOpen = false;
59.        }
60.    }
61.}










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ