This article is currently in the process of being translated into Bulgarian (~98% done).
Hello, bound world! - Здравей, обвързан свят!
Точно както започнахме този урок с класическия "Hello, world!" пример, ще ви покажем колко лесно е да използвате обвързване на данни в WPF с "Hello, bound world!" пример. Нека преминем направо към него и след това ще го обясним:
<Window x:Class="WpfTutorialSamples.DataBinding.HelloBoundWorldSample"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="HelloBoundWorldSample" Height="110" Width="280">
<StackPanel Margin="10">
<TextBox Name="txtValue" />
<WrapPanel Margin="0,10">
<TextBlock Text="Value: " FontWeight="Bold" />
<TextBlock Text="{Binding Path=Text, ElementName=txtValue}" />
</WrapPanel>
</StackPanel>
</Window>
Този прост пример показва как обвързваме стойността на TextBlock, за да съответства на свойството Text на TextBox-а. Както можете да видите от екранната снимка, TextBlock се актуализира автоматично, когато въведете текст в TextBox. В необвързан свят това би изисквало да слушаме за събитие в TextBox и след това да актуализираме TextBlock всеки път, когато текстът се промени, но с обвързването на данни тази връзка може да се установи само чрез използване на маркиране.
Синтаксис на Обвързването (Binding)
Цялата магия се случва между фигурните скоби, които в XAML капсулират Markup Extension. За обвързване на данни използваме разширението Binding, което ни позволява да опишем обвързващата връзка за свойството Text. В най-простата си форма обвързването може да изглежда така:
{Binding}
Това просто връща текущия контекст на данните (повече за това по-късно). Това определено може да бъде полезно, но в най-често срещаните ситуации бихте искали да обвържете едно свойство с друго свойство в контекста на данните. Обвързване като това би изглеждало така:
{Binding Path=НаименованиеНаСвойството}
Path задава свойството, към което искате да се обвържете, но тъй като Path е свойство по подразбиране на обвързване, можете да го оставите, ако искате просто така:
{Binding НаименованиеНаСвойството}
Ще видите много различни примери, в някои Path е изрично дефиниран, в други е пропуснат. В крайна сметка наистина зависи от вас.
Обвързването обаче има много други свойства, като едно от тях е ElementName, което използваме в нашия пример. Това ни позволява да се свържем директно с друг UI елемент като източник. Всяко свойство, което задаваме в обвързването, е разделено със запетая:
{Binding Path=Text, ElementName=txtValue}
Обобщение
Това беше само бегъл поглед към всички възможности на обвързването в WPF. В следващите глави ще открием повече от тях, за да ви покажем колко мощно е обвързването на данни.