TOC

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

Legarea Datelor:

Utilizare DataContext (Context de Date)

Proprietatea DataContext este sursa implicită a legărilor dvs., cu excepția cazului în care declarați în mod expres altă sursă, așa cum am făcut-o în capitolul anterior cu proprietatea ElementName. Acesta este definit pe clasa FrameworkElement, pe care majoritatea controalelor UI, inclusiv fereastra WPF, mostenesc de la. Pur și simplu puneți-o vă permite să specificați o bază pentru legăturile dvs.

Nu există o sursă implicită pentru proprietatea DataContext (este pur și simplu nulă în mod implicit), dar deoarece un DataContext este moștenit în josul ierarhiei de controale , puteți seta un DataContext pentru fereastra în sine și apoi să le utilizați în toate controalele copil a acesteia. Să încercăm să ilustrăm acest lucru cu un exemplu simplu:

<Window x:Class="WpfTutorialSamples.DataBinding.DataContextSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="DataContextSample" Height="130" Width="280">
	<StackPanel Margin="15">
		<WrapPanel>
			<TextBlock Text="Window title:  " />
			<TextBox Text="{Binding Title, UpdateSourceTrigger=PropertyChanged}" Width="150" />
		</WrapPanel>
		<WrapPanel Margin="0,10,0,0">
			<TextBlock Text="Window dimensions: " />
			<TextBox Text="{Binding Width}" Width="50" />
			<TextBlock Text=" x " />
			<TextBox Text="{Binding Height}" Width="50" />
		</WrapPanel>
	</StackPanel>
</Window>
using System;
using System.Windows;

namespace WpfTutorialSamples.DataBinding
{
	public partial class DataContextSample : Window
	{
		public DataContextSample()
		{
			InitializeComponent();
			this.DataContext = this;
		}
	}
}

Codul din spatele acestui exemplu adaugă doar o singură linie de cod interesantă: După apelul standard InitalizeComponent (), atribuim referința "this" (aceasta) la DataContext, ceea ce, în principiu doar îi spune ferestrei că dorim ca ea însăși să fie contextul de date.

În XAML, folosim acest fapt pentru a ne lega de mai multe proprietăți Window, inclusiv Titlu, Lățime și Înălțime. Din moment ce fereastra are un DataContext, care este trecut către controlul copil, nu trebuie să definim o sursă pe fiecare legare - noi folosim valorile ca și cum ar fi disponibile pe plan global.

Încercați să executați exemplul și să redimensionați fereastra - veți vedea că modificările de dimensiuni se reflectă imediat în textbox-uri. De asemenea, puteți încerca să scrieți un alt titlu în primul câmp text, dar s-ar putea să fiți surprins să vedeți că această schimbare nu este reflectată imediat. În schimb, trebuie să mutați focalizarea în alt control înainte de a aplica modificarea. De ce? Ei bine, asta e subiectul următorului capitol.

Sumar

Utilizarea proprietății DataContext este ca și cum am seta baza tuturor legăturilor în jos prin ierarhia controalelor. Acest lucru vă salvează manevrarea manuală definind o sursă pentru fiecare legare, și odată ce începeți cu adevărat să utilizați legături de date, veți aprecia cu siguranță timpul și tastarea de cod economisită.

Totuși, aceasta nu înseamnă că trebuie să utilizați același DateContext pentru toate controalele dintr-o Window (Fereastră). Deoarece fiecare control are propria proprietate DataContext, puteți rupe cu ușurință lanțul moștenirii și suprascrie DataContext cu o nouă valoare. Acest lucru vă permite să aveți un DateContext global la nivel de Window ( fereastră) și un DataContext mai local și mai specific, de ex. un panou care deține un form separat sau ceva similar.


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!