Windows Phone Tips集 第2弾 第5回 MainPage.xamlの編集とコントロールの追加 MainPage.xamlの編集とコントロールの追加 LayoutRootというx:Nameを持つを に変更しておきます。x:NameがPageTitleというTextBlockを削除します。 ツールボックスからButtonコントロールを3個、InkPresenterコントロールを1個、InkPresenterコントロールの子要素として、Imageコントロールを1個配置します。また、ListBoxコントロールを1個、Sliderコントロールを1個も配置します。ListBoxコントロールの背景色にSilver、Foreground(文字色)にNavyを指定します。Sliderコントロールのプロパティの[共通]パネル内の、Maximumに320、SmallChangeに1と指定します。Maximumプロパティには、範囲要素に指定できるMaximumValueを設定します。SmallChangeプロパティには、Valueに対して加算または減算するValueを設定します。書き出されるXAMLコードをリスト2のように編集します。 リスト2 編集されたXAMLコード(MainPage.xaml) (1)<phone:PhoneApplicationPage.Resources>プロパティ要素内に<DataTemplate>要素を配置し、ListBoxTemplateというキーのテンプレートを定義します。テンプレート内では以下の内容を定義しています。 2列を作成し、<StackPanel>要素を配置して、OrientaionプロパティにVertical(垂直方向)を指定します。デフォルトはVertical(垂直方向)です。StackPanel内の要素が垂直方向にスタックされます。画像の下に、画像名が表示されることになります。1列目に<Image>要素を配置し、SourceプロパティにfileNameをバインドします。WidthとHeightの値も指定しておきます。2列目には<TextBlock>要素を配置し、Textプロパティに「画像名」をバインドします。ここで指定する名称はVBコード内のクラスで定義するプロパティ名です。 (2)<Grid>を<Canvas>要素に変更しています。 (3)<InkPresenter>要素の子要素として<Image>要素を配置します。 (4)(1)で定義したテンプレートをItemTemplateに指定して、参照させます。 (5)Sliderは、最初は使用不可としておきます。 <phone:PhoneApplicationPage xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" xmlns:el="clr-namespace:Microsoft.Expression.Interactivity.Layout;assembly=Microsoft.Expression.Interactions" x:Class="WP71_PhotoChooserTask.MainPage" mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768" SupportedOrientations="Portrait" Orientation="Portrait" shell:SystemTray.IsVisible="True" Language="ja-JP"> <phone:PhoneApplicationPage.Resources> ■(1) <DataTemplate x:Key="ListBoxTemplate"> ■(1) <Grid> <Grid.RowDefinitions> <RowDefinition/> <RowDefinition/> </Grid.RowDefinitions> <StackPanel Orientation="Vertical" Margin="5" HorizontalAlignment="Left"> ■(1) <Image Source="{Binding fileName}" Width="75" Height="18" Grid.Row="0"/> ■(1) <TextBlock Text="{Binding 画像名}" Width="130"/> ■(1) </StackPanel> </Grid> </DataTemplate> </phone:PhoneApplicationPage.Resources> <!--ApplicationBar の使用法を示すサンプル コード--> ~コード略~ <!--LayoutRoot は、全てのページ コンテンツが配置されるルート グリッドです--> <Canvas x:Name="LayoutRoot" Background="Transparent"> ■(2) <!--TitlePanel は、アプリケーション名とページ タイトルを格納します--> <StackPanel x:Name="TitlePanel" Margin="12,17,0,28"> <TextBlock x:Name="ApplicationTitle" Text="マイ アプリケーション" Style="{StaticResource PhoneTextNormalStyle}"/> </StackPanel> <!--ContentPanel - 追加コンテンツをここに入力します--> <InkPresenter x:Name="InkPresenter1" Height="296" Width="268" Canvas.Left="43" Canvas.Top="128"> ■(3) <Image Height="296" HorizontalAlignment="Left" x:Name="Image1" Stretch="Uniform" VerticalAlignment="Top" Width="268" /> ■(3) </InkPresenter> ■(3) <Button Content="画像読み込み" Height="79" x:Name="callImageButton" Width="303" Canvas.Left="24" Canvas.Top="50" /> <ListBox Height="237" x:Name="ListBox1" Width="134" ItemTemplate="{StaticResource ListBoxTemplate}" Background="Silver" Canvas.Left="326" Canvas.Top="134" Foreground="Navy" /> ■(4) <Button Content="保存" Height="77" Name="saveButton" Width="394" Canvas.Left="43" Canvas.Top="586" /> <Slider Height="84" x:Name="Slider1" Width="394" Maximum="320" SmallChange="1" Canvas.Left="43" Canvas.Top="430" IsEnabled="False"/> ■(5) <Button Canvas.Left="43" Canvas.Top="520" Content="全クリア" Height="74" Name="clearButton" Width="394" /> </Canvas> ■(2) </phone:PhoneApplicationPage> 全て設定すると図4のようになります。 図4:各コントロールを配置してプロパティを設定した(クリックで拡大) 次に、MainPage.xamlを展開して表示される、MainPage.xaml.vbをダブルクリックしてリスト2のコードを記述します。 ロジックコードを記述する リスト2 (MainPage.xaml.vb) Option Strict On ランチャーやチューザーに関するクラスの含まれる、Microsoft.Phone.Tasks名前空間をインポートします。 Imports Microsoft.Phone.Tasks 仮想ファイルシステムを作成および使用するための型が含まれている、System.IO.IsolatedStorage名前空間をインポートします。分離ストレージによって、安全なクライアント側のストレージが提供されます。 Imports System.IO.IsolatedStorage 曲、アルバム、再生リスト、およびピクチャを列挙、再生、および表示するためのクラスの含まれる、Microsoft.Xna.Framework.Media名前空間をインポートします。ピクチャへのアクセスを提供するMediaLibrayクラスを使用するため、この名前空間のインポートが必要です。 Imports Microsoft.Xna.Framework.Media Imports System.Windows.Media.Imaging Imports System.Xml.Linq このサンプルでは、アタッチされた要素を、マウスをドラッグのジェスチャに応答して要素の上に再配置する、MouseDragElementBehaviorクラスを使用するため、このクラスの含まれる、Microsoft.Expression.Interactivity.Layout名前空間のインポートが必要です。 Imports Microsoft.Expression.Interactivity.Layout ImageFilterというクラス内に文字列型の「画像名」と「fileName」というプロパティを定義しておきます。 Public Class ImageFilter Public Property 画像名 As String Public Property fileName As String End Class Partial Public Class MainPage Inherits PhoneApplicationPage ' コンストラクター Public Sub New() InitializeComponent() End Sub XMLの要素を表すXElementクラス型のメンバ変数xmldocを宣言します。 Dim xmldoc As XElement Dim myScale As Double = 1 書き込みおよび更新が可能な BitmapSourceを提供する、WriteableBitmapクラス型のmyWriteableBitmapメンバ変数を宣言します Dim myWriteableBitmap As WriteableBitmap Imageクラス型のメンバ変数createImageを宣言します。 Dim createImage As Image 「読み込んだ画像に装飾を施し、PictureHUBに保存する」サンプルプログラム You don't have access to download this file. ページ送り 前ページ Page 1 Page 2 Page 3 次ページ この記事のキーワード : #PictureHUB #Visual Studio 2010 #Windows Phone #グッズ #サンプルプログラム #スマートフォン #設計/開発 開発ツール 824モバイル 248技術解説 4,025 この記事をシェアしてくださいシェアポスト>はてブnoteで書く