Pongeponge

バインドの理解状況

正牌龜甲縛!正牌龜甲縛! / 南宮博士

とりあえず今バインドについて「こうだろう」と理解してること。
・バインドしたい変数にインテグサ(get;set;のアレ)を付ける
WPFの場合、バインドするコントロールにNameで名前を付ける
・Bindingクラスをnewする
・Sourceにバインドしたい変数を保持してるクラス
・Pathにバインドしたい変数の名前を与える
・SetBindingでコントロールと変数を結び付けてバインド終了

MainWindow.xaml

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Button x:Name="ChangeButton" Content="Button" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Width="75"/>
        <Label x:Name="TextLabel" Content="Label" HorizontalAlignment="Left" Margin="10,34,0,0" VerticalAlignment="Top"/>
    </Grid>
</Window>

こんな感じでウィンドウ作って

Person.cs

namespace WpfApplication1
{
    public class Person
    {
        public string Name { get; set; }
    }
}

こういうクラスを作る

MainWindow.xaml.cs

using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;

namespace WpfApplication1
{
    /// <summary>
    /// MainWindow.xaml の相互作用ロジック
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            //人物名
            Person person = new Person();
            person.Name = "クラウザー さん";

            Binding bin = new Binding();
            bin.Source = person;
            bin.Path = new PropertyPath("Name");
           
            this.TextLabel.SetBinding(Label.ContentProperty, bin);
        }
    }

こんな感じで書いて実行すると

f:id:pongeponge:20140327164235j:plain
 ラベルのところにちゃんとバインドされて表示されたみたいです。

 ボタンの動作もバインドできるとかどうとか書いてあるけど、そこらへんはまだ。
何かいちいちめんどくさい感じが凄いんですよね。慣れでしょうけど。

写真で覚える捕縄術―手にとるようにわかる完成手順