V tomto, už pätnástom diely sa pozrieme na dátový binding, opäť na príklade webového prehliadača z minulého diela. Vďaka tomu sa bude jednať o kratší diel, ktorý dúfam ospravedlníte.
Úvod
Dátový binding je funkcia WPF dovoľujúca nám pevne previazať parameter prvku z inými dátami. Môžete ho previazať z klasickou vlastnosťou, ktorú ste vytvorili, parametrom iného objektu alebo aj vonkajším zdrojom. Dnes sa pozrieme práve na previazanie z vlastnosťou.
Úpravy starého kódu
V našej triede zo stránkou webového prehliadača BrowserPage.cs. Do nej pridajte novú vlastnosť s menom Title.
public string Title { get { return _title; } set { _title = value; NotifyPropertyChanged("Title"); } }
Asi ste si všimli novej metódy NotifyPropertyChanged. Tá je potrebná, aby sme program informovali, že sa niečo zmenilo. Preto musíte v tejto triede implementovať rozhranie INotifyPropertyChanged. public partial class BrowserPage : UserControl, INotifyPropertyChanged
Pri implementácií pridáte nový event PropertyChanged, a metóda NotifyPropertyChanged ho bude len aktivovať.
public event PropertyChangedEventHandler PropertyChanged; public void NotifyPropertyChanged(string propertyName) { if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); }
Ďalej do metódy LoadComplete priraďte tejto vlastnosti hodnotu. Pri tom budete musieť vytvoriť dynamický odkaz na dokument a z neho túto premennú priradiť, a pre istotu aj zavoláme metódu NotifyPropertyChanged
dynamic Document = browser.Document; Title = Document.Title; NotifyPropertyChanged("Title");
Podobne upravíme aj konštruktor.
public BrowserPage() { Title = "Nová Stránka"; NotifyPropertyChanged("Title"); InitializeComponent(); }
Priradenie Bindingu.
Najprv si priradíme Binding do našej prvej stránky – to spravíme z kódu XAML a priradíme ho Headeru TabItemu.
Najprv nastavíme Element na náš browser a ako cestu priradíme Title, čo je vlastnosť ktorú sme pred chvíľou vytvorili.
<TabItem Header="{Binding ElementName=FirstBrowser, Path=Title}" PreviewMouseDown="TabItem_PreviewMouseDown_Page"> <local:BrowserPage x:Name="FirstBrowser" Width="Auto" Height="Auto"/> </TabItem>
POZOR: Množinové zátvorky sú dôležité.
Ďalej budeme musieť z kódu C# priradiť Binding ostatným stránkam.
Namiesto toho, aby sme však hodnotu Headeru priraďovali ručne ako predtým, vytvoríme nový Binding. Jeho premennú Source nastavíme na našu stránku a Path nastavíme ako nový PropertyPath odkazujúci na premennú Title.
Binding b = new Binding(); b.Source = page; b.Path = new PropertyPath("Title");
Na záver už len tento Binding priradíme nášmu TabItemu. item.SetBinding(TabItem.HeaderProperty, b);
Tým máme všetko hotové a ja sa s vami v tomto dieli lúčim. Uvidíme sa nabudúce v dieli zameranom na použitie ComboBoxu.
Už pred odstavcom „Priradenie Bindingu“ som stratil nitku.
Nebolo by zlé sem hodiť odkaz na zdrojové kódy…
Pracujem na kompletnom prepracovaní webu a článkov. Po dokončení budu vždy pridané aj zdrojové kódy.
Ok. Ďakujem