TOC

This article is currently in the process of being translated into Japanese (~87% done).

Data binding:

Data binding via Code-behind

以前のデータバインディングの例で見たように、XAMLを使ってバインディングを定義するのは非常に簡単です。しかし、特定のケースでは、代わりにコードビハインドを使いたいこともあるかもしれません。これも同様に簡単で、XAMLを使うのと正確に同じ機能を提供してくれます。"Hello, bound world" サンプルを試してみましょう。ただし今回は必要なバインディングをコードビハインドで作ります。

<Window x:Class="WpfTutorialSamples.DataBinding.CodeBehindBindingsSample"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="CodeBehindBindingsSample" Height="110" Width="280">
    <StackPanel Margin="10">
<TextBox Name="txtValue" />
<WrapPanel Margin="0,10">
    <TextBlock Text="Value: " FontWeight="Bold" />
    <TextBlock Name="lblValue" />
</WrapPanel>
    </StackPanel>
</Window>
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;

namespace WpfTutorialSamples.DataBinding
{
    public partial class CodeBehindBindingsSample : Window
    {
public CodeBehindBindingsSample()
{
    InitializeComponent();

    Binding binding = new Binding("Text");
    binding.Source = txtValue;
    lblValue.SetBinding(TextBlock.TextProperty, binding);
}
    }
}

Binding のインスタンスを作ることで動作します。必要な path を直接コンストラクタに指定します。Text プロパティにバインドしたいので、この場合は "Text" です。次に Source を指定します。この例では、TextBox コントロールにする必要があります。これで、WPFはTextBoxをソースコントロールとして使うべきことを知っていて、明確に、Text プロパティが保持する値を探していることを知っています。

最後の行では、新しく作った Binding オブジェクトと、目的・目標のコントロールを結びつけるために SetBinding メソッドと使います。この場合、目標は TextBlock (lbValue) です。SetBinding() メソッドは2つのパラメータを取ります。一つはバインドしたい依存プロパティで、もう一つは使いたいバインディングオブジェクトです。

まとめ

この様に、C#でバインディングを作るのは簡単です。データバインディングの初心者にとって、これらを内部で生成するXAMLの構文と比較した場合、C#の方が把握するのは多分少し簡単でしょう。どちらを使うかはあなた次第です。どちらもうまく動きます。


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!