This article has been localized into Czech by the community.
Vázání dat (data binding) přes Code-behind
Jak jsme viděli v předchozích příkladech vazby dat, definování vazby pomocí XAML je velmi snadné, ale v určitých případech můžete chtít to provést z Code-behind. To je také poměrně snadné a nabízí přesně stejné možnosti jako při používání XAML. Zkusme příklad "Hello, bound world", ale tentokrát vytvoříme požadovanou vazbu z 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);
}
}
}
To funguje tak, že vytvoříme instanci Binding. Přímo v konstruktoru specifikujeme cestu, kterou chceme, v tomto případě "Text", protože chceme navázat na vlastnost Text. Poté specifikujeme Source (zdroj), který by pro tento příklad měl být ovládací prvek TextBox. Nyní WPF ví, že by měl použít TextBox jako zdrojový ovládací prvek a že konkrétně hledáme hodnotu obsaženou ve vlastnosti Text.
V posledním řádku používáme metodu SetBinding k spojení našeho nově vytvořeného objektu Binding s cílovým ovládacím prvkem, v tomto případě TextBlock (lblValue). Metoda SetBinding() přijímá dva parametry, jeden, který říká, na kterou závislou vlastnost chceme navázat, a jeden, který obsahuje objekt vazby, který chceme použít.
Shrnutí
Jak vidíte, vytváření vazeb v kódu C# je snadné a možná trochu snazší k pochopení pro lidi, kteří jsou noví v datových vazbách, ve srovnání se syntaxí používanou pro jejich inline vytváření v XAML. Kterou metodu použijete, záleží na vás - obě fungují zcela v pořádku.