ソース掲示板




すべてから検索

キーワード   条件 表示 現行ログ 過去ログ トピックス 名前 本文
Windows8(C#) ストアアプリ : ListBox テンプレート
日時: 2013/05/19 19:53
名前: lightbox









MainPage.xaml
<Page
	x:Class="LBOX_ListBox.MainPage"
	xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
	xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
	xmlns:local="using:LBOX_ListBox"
	xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
	xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
	mc:Ignorable="d"
	d:DataContext="{d:DesignData ListMainDesignData.xaml}"
	Loaded="Page_Loaded">
	
	<Page.Resources>
		<local:TextResource
			x:Key="GlobalText"
			PageTitle="ListBox テンプレート"
			AppName="lightbox サンプルアプリケーション" />

		<!-- ListBox 用ビジュアル定義 -->
		<DataTemplate
			x:Key="ListBox2Item">
			<StackPanel
				Margin="0,0,0,4"
				Width="432"
				Height="45">
				<TextBlock
					Text="{Binding id}"
					TextWrapping="Wrap" />
				<TextBlock
					Text="{Binding name}"
					TextWrapping="Wrap"
					Margin="12,-6,12,0"
					FontSize="24" />
			</StackPanel>
		</DataTemplate>

	</Page.Resources>

	<!--画面定義-->
	<Grid
		x:Name="MainGrid"
		Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
		<Border 
			BorderBrush="#FF999999"
			BorderThickness="3"
			HorizontalAlignment="Left"
			Height="422"
			Margin="76,126,0,0"
			VerticalAlignment="Top"
			Width="574"
			Background="#FF323232" CornerRadius="20">
			<!-- メインリストボックス -->
			<ListBox
				x:Name="ListMenu"
				HorizontalAlignment="Left"
				Height="324"
				Margin="57,43,0,0"
				VerticalAlignment="Top"
				Width="462"
				ItemsSource="{Binding Items}"
				ItemTemplate="{StaticResource ListBox2Item}"
				Tapped="ListMenu_Tapped" />
		</Border>
		<Border
			BorderBrush="#FF999999"
			BorderThickness="3"
			HorizontalAlignment="Left"
			Height="546"
			Margin="682,126,0,0"
			VerticalAlignment="Top"
			Width="526"
			Background="#FF323232"
			CornerRadius="20"
			Grid.Row="1"
			Grid.Column="1">
			<!-- サブリストボックス -->
			<ListBox
				x:Name="ListMenu_Child"
				HorizontalAlignment="Left"
				Height="448"
				Margin="57,43,0,0"
				VerticalAlignment="Top"
				Width="410"
				ItemsSource="{Binding Items}"
				ItemTemplate="{StaticResource ListBox2Item}" />

		</Border>

		<TextBlock
			DataContext="{StaticResource GlobalText}"
			HorizontalAlignment="Left"
			Height="61"
			Margin="76,60,0,0"
			TextWrapping="Wrap"
			Text="{Binding PageTitle}"
			VerticalAlignment="Top"
			Width="1090"
			FontSize="40"
			FontWeight="Bold"
			FontFamily="Meiryo">
		</TextBlock>
		
		<TextBox
			x:Name="UpdateField"
			HorizontalAlignment="Left"
			Margin="140,582,0,0"
			TextWrapping="Wrap"
			VerticalAlignment="Top"
			Width="460"
			Height="90"
			AcceptsReturn="True"
			FontSize="26" />


	</Grid>

	<!--AppBar の定義-->
	<Page.BottomAppBar>
		<AppBar>
			<Grid
				x:Name="AppBarGrid">
				<Grid.ColumnDefinitions>
					<ColumnDefinition />
					<ColumnDefinition />
				</Grid.ColumnDefinitions>

				<StackPanel
					x:Name="LeftBar"
					Orientation="Horizontal"
					HorizontalAlignment="Left">

					<!--StandardStyles に定義されたスタイルをそのまま適用する-->

					<!--設定ボタン-->
					<Button
						x:Name="SettingButton"
						AutomationProperties.Name="設定"
						HorizontalAlignment="Stretch"
						VerticalAlignment="Stretch"
						Style="{StaticResource SettingsAppBarButtonStyle}"
						Click="SettingButton_Click" />

					<!--お気に入りボタン-->
					<Button
						x:Name="FavoriteButton"
						AutomationProperties.Name="お気に入り"
						HorizontalAlignment="Stretch"
						VerticalAlignment="Stretch"
						Style="{StaticResource FavoriteAppBarButtonStyle}"
						Click="FavoriteButton_Click" />

				</StackPanel>

				<StackPanel
					x:Name="RightBar"
					Grid.Column="1"
					HorizontalAlignment="Right"
					Orientation="Horizontal">

					<!-- 保存ボタンを定義時に、表示文字列を変更する-->
					<Button
						x:Name="SaveButton"
						AutomationProperties.Name="保存"
						Grid.Column="1"
						HorizontalAlignment="Stretch"
						VerticalAlignment="Stretch"
						Style="{StaticResource SaveAppBarButtonStyle}"
						Click="SaveButton_Click"					 />

					<!--メールボタン-->
					<Button
						x:Name="MailButton"
						AutomationProperties.Name="メール"
						Grid.Column="1"
						HorizontalAlignment="Stretch"
						VerticalAlignment="Stretch"
						Style="{StaticResource MailAppBarButtonStyle}"
						Click="MailButton_Click" />

				</StackPanel>
			</Grid>
		</AppBar>
	</Page.BottomAppBar>
	
</Page>
メンテナンス

MainPage.xaml.cs ( No.1 )
日時: 2013/05/19 19:40
名前: lightbox


日時: 2013/05/19 19:40
名前: lightbox
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using Windows.ApplicationModel;
using Windows.ApplicationModel.Activation;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.Storage;
using Windows.UI.Popups;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Automation;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;

//名前空間
namespace LBOX_ListBox
{
	//クラス
	public sealed partial class MainPage : Page
	{
		// ファイルが存在するかどうかを示すフラグ
		private bool bExist = false;


		// *************************************************
		//コンストラクタ
		// *************************************************
		public MainPage()
		{
			this.InitializeComponent();
			Debug.WriteLine("MainPage のコンストラクタが実行されました");

			App.mainPage = this;

			// メインリストボックスにバインド用のメインクラスを設定
			App.listMain = new ListMain();
			this.ListMenu.DataContext = App.listMain;

			// メインリストボックスのデータを追加
			App.listMain.Items.Add(new ListItem2() { id = "Windows Store", name = "Windows8 C# 用テンプレート" });
			App.listMain.Items.Add(new ListItem2() { id = "Windows Phone", name = "Windows Phone C# 用テンプレート" });
			App.listMain.Items.Add(new ListItem2() { id = "Android", name = "ADT 用 テンプレート" });

			// サブリストボックスにバインド用のメインクラスを設定
			App.listChild = new ListMain();
			this.ListMenu_Child.DataContext = App.listChild;

		}

		// *************************************************
		// ページのロード
		// *************************************************
		private async void Page_Loaded(object sender, RoutedEventArgs e)
		{
			Debug.WriteLine("ページがロードされました");

			Package package = Package.Current;
			StorageFolder storageFolder = package.InstalledLocation;
			String output = String.Format("Installed Location: {0}", storageFolder.Path);
			Debug.WriteLine(output);

			// 対象フォルダ( マニフェストで使用宣言が必要 )
			// ※ 対象ファイルの存在チェック
			// StorageFolder storageFolder = KnownFolders.DocumentsLibrary;

			bExist = false;
			try
			{
				StorageFile strageFile = await storageFolder.GetFileAsync("Windows Store.txt");
				bExist = true;
			}
			catch (Exception ex)
			{
				Debug.WriteLine(ex.Message);
			}

			if (bExist)
			{
				Debug.WriteLine("Windows Store.txt は存在します");
			}
			else
			{
				Debug.WriteLine("Windows Store.txt は存在しません");
			}

		}

		// *************************************************
		// このページがフレームに表示されるときに呼び出されます。
		// *************************************************
		protected override void OnNavigatedTo(NavigationEventArgs e)
		{
			Debug.WriteLine("ページがフレームに表示されました");

			// Navigate が実行された時のパラメータを表示しています
			var mp = (App.MyParam)e.Parameter;
			Debug.WriteLine("Title : " + mp.title);
			Debug.WriteLine("Type : " + mp.type);
		}

		// *************************************************
		//設定ボタン
		// *************************************************
		private void SettingButton_Click(object sender, RoutedEventArgs e)
		{
			// 選択されているインデックス
			int idx = this.ListMenu.SelectedIndex;
			App.listMain.Items[idx].name = this.UpdateField.Text;
			//App.listMain.Items[idx].NotifyPropertyChanged("name");

		}

		// *************************************************
		//削除ボタン 
		// *************************************************
		private void DeleteButton_Click(object sender, RoutedEventArgs e)
		{

		}

		// *************************************************
		//お気に入りボタン
		// *************************************************
		private void FavoriteButton_Click(object sender, RoutedEventArgs e)
		{

		}

		// *************************************************
		//保存ボタン
		// *************************************************
		private void SaveButton_Click(object sender, RoutedEventArgs e)
		{

		}

		// *************************************************
		//メールボタン
		// *************************************************
		private void MailButton_Click(object sender, RoutedEventArgs e)
		{

		}

	}
}
このアーティクルの参照用URLをクリップボードにコピー メンテナンス
MainPagePartial.cs ( No.2 )
日時: 2013/05/19 19:41
名前: lightbox
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.Storage;
using Windows.UI.Popups;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Automation;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;

namespace LBOX_ListBox
{
	public sealed partial class MainPage : Page
	{

		// *************************************************
		// ListBox がタップされた
		// *************************************************
		private void ListMenu_Tapped(object sender, TappedRoutedEventArgs e)
		{
			ListBox lb = sender as ListBox;
			if (lb.SelectedItem != null)
			{
				// ListBox のアイテムは、バインドされているクラスとして実装されている
				ListItem2 li = lb.SelectedItem as ListItem2;
				// 内容を取得
				Debug.WriteLine("ListBox がタップされた : " + li.id + " : " + li.name);

				// テキストエリアへ転送
				this.UpdateField.Text = li.name;

				// 一覧をクリア
				App.listChild.Items.Clear();

				if (li.id == "Windows Store")
				{
					// メインリストボックスのデータを追加
					App.listChild.Items.Add(new ListItem2() { id = "メニュー", name = "アプリケーションバー" });
					App.listChild.Items.Add(new ListItem2() { id = "外部データ", name = "ファイルアクセス" });
					App.listChild.Items.Add(new ListItem2() { id = "コントロール", name = "リストボックス" });

				}

				if (li.id == "Windows Phone")
				{
					// メインリストボックスのデータを追加
					App.listChild.Items.Add(new ListItem2() { id = "メニュー", name = "AppBar" });
					App.listChild.Items.Add(new ListItem2() { id = "外部データ", name = " IsolatedStorageSettings" });
				}

				if (li.id == "Android")
				{
					// メインリストボックスのデータを追加
					App.listChild.Items.Add(new ListItem2() { id = "メニュー", name = "Menu" });
					App.listChild.Items.Add(new ListItem2() { id = "外部データ", name = "SharedPreferences" });
					App.listChild.Items.Add(new ListItem2() { id = "コントロール", name = "ListView" });
				}

			}
		}

		// *************************************************
		// メッセージボックス応答用テンプレート
		// *************************************************
		private void CommandInvokedHandler(IUICommand command)
		{
			Debug.WriteLine("保存ボタンがクリックされました");
			Debug.WriteLine("応答ボタンのテキストは《" + command.Label + "》です");

			// ボタンの応答
			if (command.Id.Equals(0))
			{
				Debug.WriteLine("OK");
			}
			if (command.Id.Equals(1))
			{
				Debug.WriteLine("CANCEL");
			}

		}

	}

}
このアーティクルの参照用URLをクリップボードにコピー メンテナンス
App.xaml.cs ( No.3 )
日時: 2013/05/19 19:43
名前: lightbox
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using Windows.ApplicationModel;
using Windows.ApplicationModel.Activation;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;

//名前空間
namespace LBOX_ListBox
{
	//クラス
	sealed partial class App : Application
	{
		// 簡単に参照可能なように、static で定義
		public static ListMain listMain = null;
		public static ListMain listChild = null;
		public static MainPage mainPage = null;

		//コンストラクタ
		public App()
		{
			this.InitializeComponent();
			this.Suspending += OnSuspending;
		}

		// プログラム全体で共有する構造体の定義( Navigate の引数用 )
		public struct MyParam
		{
			public string title;
			public int type;
		}

		// ルートフレームの作成
		public Frame rootFrame = Window.Current.Content as Frame;

		// *************************************************
		// アプリケーションがエンド ユーザーによって正常に起動されたときに呼び出されます
		// *************************************************
		protected override void OnLaunched(LaunchActivatedEventArgs args)
		{
			// Navigate の引数作成
			MyParam NavigateArgs = new MyParam() { title = "アプリケーション開始", type = 0 };

			// ウィンドウに既にコンテンツが表示されている場合は、アプリケーションの初期化を繰り返さずに、
			// ウィンドウがアクティブであることだけを確認してください
			if (rootFrame == null)
			{

				Debug.WriteLine("ルートフレームを新しく作成しました");
				rootFrame = new Frame();

				if (args.PreviousExecutionState == ApplicationExecutionState.Terminated)
				{
					//TODO: 以前中断したアプリケーションから状態を読み込みます。
				}

				// フレームを現在のウィンドウに配置します
				Window.Current.Content = rootFrame;
			}

			if (rootFrame.Content == null)
			{

				// *************************************************
				// ナビゲーション スタックが復元されていない場合、最初のページに移動します。
				// このとき、必要な情報をナビゲーション パラメーターとして渡して、新しいページを
				// 構成します
				// *************************************************
				if (!rootFrame.Navigate(typeof(MainPage), NavigateArgs))
				{
					throw new Exception("Failed to create initial page");
				}

				Debug.WriteLine("ルートフレームにページをロードしました");

			}

			// 現在のウィンドウがアクティブにします
			Window.Current.Activate();
		}

		// *************************************************
		// アプリケーションの実行が中断されたときに呼び出されます。
		// *************************************************
		private void OnSuspending(object sender, SuspendingEventArgs e)
		{
			Debug.WriteLine("アプリケーションの実行が中断されました");

			var deferral = e.SuspendingOperation.GetDeferral();
			//TODO: アプリケーションの状態を保存してバックグラウンドの動作があれば停止します
			deferral.Complete();
		}
	}
}
このアーティクルの参照用URLをクリップボードにコピー メンテナンス