Architect's Log

I'm a Cloud Architect. I'm highly motivated to reduce toils with driving DevOps.

Silverlight DataContextプロパティでバインディングソースを指定する

ターゲットのDataContextプロパティで、バインディングソースを指定するサンプルです。

ソースコード

Human.cs

バインディングソースのオブジェクトになります。

namespace SilverlightApplication1
{
    public class Human
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
    }
}
MainPage.xaml
<UserControl xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit"  x:Class="SilverlightApplication1.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:my="clr-namespace:SilverlightApplication1"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">
    <UserControl.Resources>
        <my:Human x:Key="human" ID="100" Name="佐藤太郎" Age="20" />
    </UserControl.Resources>
    <StackPanel DataContext="{Binding Source={StaticResource human}}">
        <!-- Bindingオブジェクトは、バインディングソースの指定がない場合、ターゲットのDataContextプロパティをソースとする。 -->
        <!-- 子オブジェクトにDataContextプロパティの指定がないので、親オブジェクトのDataContextプロパティが継承される。 -->
        <TextBox Text="{Binding ID}" />
        <TextBox Text="{Binding Name}" />
        <TextBox Text="{Binding Age}" />
    </StackPanel>
</UserControl>

レンダリング