TOC

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

Связывание данных:

Data binding via Code-behind

Как мы узнали из прошлого примера про связывание данных, очень просто определять связи из XAML, но в некоторых случаях вы можете захотеть сделать это из застраничного кода (code-behind). Это также очень легко и будет иметь те же возможности, что дает связывание через 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. Мы задаем желаемый путь прямо в конструкторе, в нашем случае "Text", ведь мы хотим связать свойство Text. Затем мы указываем Source, которым для этого примера будет элемент TextBox. Теперь WPF знает что надо использовать TextBox как исходный элемент, и что нам интересно значение его свойства Text в частности.

В последней строчке мы вызываем метод SetBinding, чтобы совместить только что созданный объект Binding с элементом назначения, в нашем случае TextBlock (lblValue). Метод SetBinding() принимает два параметра, один указывает какое свойство зависимости (dependency property) мы хотим связать, второй - объект, который мы хотим использовать.

Заключение

Как вы можете видеть, создавать связи в C# коде легко, и, возможно, несколько проще понять людям, не знакомым с data binding'ом, сравнивая с синтаксисом, который используется для создания связей в XAML. Тем не менее вам решать какой способ вы используете - они оба отлично работают.

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!