This article is currently in the process of being translated into Bulgarian (~98% done).
Обвързване на данни чрез кода (Code-behind)
Както видяхме в предишните примери за обвързване на данни, дефинирането на обвързване използвайки XAML е много лесно, но в определени случаи може да искате да го направите чрез коод (от Code-behind). Това също е доста лесно и предлага точно същите възможности както когато използвате XAML. Нека опитаме примера „Здравей, обвързан свят“ ("Hello, bound world"), но този път създавайки обвързването от Code-behind:
<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. След това посочваме Source(Източник), който за този пример трябва да бъде контролата TextBox с име "txtValue". Сега WPF знае, че трябва да използва TextBox като контрола на източника и че ние търсим конкретната стойност, съдържаща се в неговото свойство Text.
В последния ред използваме метода SetBinding, за да комбинираме нашия новосъздаден Binding обект с дестинацията/целевата контрола, в този случай TextBlock (lblValue). Методът SetBinding() приема два параметъра, единият, който казва към кое свойство искаме да се свържем, и един, който съдържа обвързващия обект, който искаме да използваме.
Обобщение
Както можете да видите, създаването на обвързвания със C# код е лесно и дори може би малко по-лесно за разбиране от хора, за които обвързванията на данни са новост, отколкото в сравнение със синтаксиса използван за създаването му директно в XAML. Кой метод ще използвате обаче зависи от вас - и двата работят еднакво добре.