SQLの窓

2012年09月08日


DataContext プロパティを使用したバインディングとオブジェクトそのもののバインディング / Windows Phone(C#)

一つの要素毎にバインディングするリソースを毎回指定するのは、後からソースを読む場合は理解しやすいですが、内容によっては一括で指定して簡略化したほうが良い場合もあります。その場合は、親要素の DataContext プロパティ に指定しておいて、Path(プロパティ名)だけを指定する方法があります

関連する記事

テキストリソースのバインディング / Windows Phone(C#)

MainPage.xaml
<phone:PhoneApplicationPage 
    x:Class="PhoneApp_Sample_01.MainPage"
    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"
    mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768"
    FontFamily="{StaticResource PhoneFontFamilyNormal}"
    FontSize="{StaticResource PhoneFontSizeNormal}"
    Foreground="{StaticResource PhoneForegroundBrush}"
    SupportedOrientations="Portrait" Orientation="Portrait"
    shell:SystemTray.IsVisible="True"
    
    xmlns:local="clr-namespace:PhoneApp_Sample_01"
    
>

    <phone:PhoneApplicationPage.Resources>
        <local:TextResource
            x:Key="textData"
            pageName="初期ページ"
            appName="テキストリソースのバインディング"
        ></local:TextResource>
        <local:SingleProp
            x:Key="singleValueClass"
            pageName="オブジェクトそのもののバインディング"
        ></local:SingleProp>
    </phone:PhoneApplicationPage.Resources>


    <!--LayoutRoot は、すべてのページ コンテンツが配置されるルート グリッドです-->
    <Grid x:Name="LayoutRoot" Background="Transparent">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Grid.DataContext>
            <Binding Source="{StaticResource textData}"/>
        </Grid.DataContext>

        <!--TitlePanel は、アプリケーション名とページ タイトルを格納します-->
        <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
            <TextBlock
                x:Name="ApplicationTitle"
                Text="{Binding Path=appName}"
                Style="{StaticResource PhoneTextNormalStyle}"
            />
            <TextBlock
                x:Name="PageTitle"
                Text="{Binding Path=pageName}"
                Margin="9,-7,0,0"
                Style="{StaticResource PhoneTextTitle1Style}"
            />
            <TextBlock
                x:Name="Description"
                Text="{Binding Source={StaticResource singleValueClass}}"
                Margin="9,-7,0,0"
                Style="{StaticResource PhoneTextAccentStyle}"
            />
        </StackPanel>

        <!--ContentPanel - 追加コンテンツをここに入力します-->
        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"></Grid>
    </Grid>

</phone:PhoneApplicationPage>
また、方法としてオブジェクトそのものをバインディングして、Path を指定しない方法もあります。但しその場合はクラスの ToString メソッドを override して、オブジェクトの規定の文字列を書き換えておく必要があります。また、インスタンス作成時の引数を XAML で指定できないようなので、プロパティとしてセットしておくか、クラス側で用意する必要があります。

SingleProp.cs
using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace PhoneApp_Sample_01
{
    public class SingleProp
    {

        private string _singleValue;
        public SingleProp()
        {
            _singleValue = "default";
        }
        public string pageName
        {
            get
            {
                return _singleValue;
            }
            set
            {
                _singleValue = value;
            }
        }
        public override string ToString()
        {
            return _singleValue;
        }
    }
}




【Windows Phoneの最新記事】
posted by lightbox at 2012-09-08 13:24 | Windows Phone | このブログの読者になる | 更新情報をチェックする
バッチ処理

Microsoft Office
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

Android SDK ポケットリファレンス
改訂版 Webデザイナーのための jQuery入門
今すぐ使えるかんたん ホームページ HTML&CSS入門
CSS ドロップシャドウの参考デモ
Google Hosted Libraries
cdnjs
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり