Přehled zdrojů vazeb (WPF .NET)

Ve vazbě dat odkazuje zdrojový objekt vazby na objekt, ze který získáváte data. Tento článek popisuje typy objektů, které můžete použít jako zdroj vazby, jako jsou objekty .NET CLR, XML a DependencyObject objekty.

Typy zdroje vazby

Datová vazba WPF (Windows Presentation Foundation) podporuje následující typy zdrojů vazeb:

Implementace zdroje vazby na objekty

Objekty CLR se můžou stát zdroji vazeb. Při implementaci třídy, která má sloužit jako zdroj vazby, je potřeba mít na paměti několik věcí.

Poskytnutí oznámení o změnách

Pokud používáte buď nebo OneWayTwoWay vazbu, implementujte vhodný mechanismus oznámení o změně vlastnosti. Doporučeným mechanismem je implementace rozhraní CLR nebo dynamické třídy INotifyPropertyChanged . Další informace naleznete v tématu Postupy: Implementace oznámení o změně vlastnosti (.NET Framework).

Existují dva způsoby, jak upozornit odběratele na změnu vlastnosti:

  1. Implementujte rozhraní INotifyPropertyChanged.

    Toto je doporučený mechanismus pro oznámení. Dodává INotifyPropertyChangedPropertyChanged událost, kterou systém vazeb respektuje. Vyvoláním této události a zadáním názvu vlastnosti, která se změnila, oznámíte cílové vazbě změny.

  2. Implementujte PropertyChanged vzor.

    Každá vlastnost, která potřebuje upozornit cíl vazby, že se změnil, má odpovídající PropertyNameChanged událost, kde PropertyName je název vlastnosti. Událost vyvoláte při každé změně vlastnosti.

Pokud váš zdroj vazeb implementuje jeden z těchto mechanismů oznámení, dojde k automatickým aktualizacím cíle. Pokud váš zdroj vazeb z nějakého důvodu neposkytuje oznámení o změně správné vlastnosti, můžete metodu UpdateTarget použít k explicitní aktualizaci cílové vlastnosti.

Další vlastnosti

Následující seznam obsahuje další důležité body, které je potřeba poznamenat:

  • Datové objekty, které slouží jako zdroje vazeb, lze deklarovat v JAZYCE XAML jako prostředky za předpokladu , že mají konstruktor bez parametrů. V opačném případě je nutné vytvořit datový objekt v kódu a přímo ho přiřadit buď k datovému kontextu stromu objektu XAML, nebo jako zdroj vazby vazby.

  • Vlastnosti, které používáte jako vlastnosti zdroje vazby, musí být veřejné vlastnosti vaší třídy. Explicitně definované vlastnosti rozhraní nelze získat přístup k účelům vazby ani k chráněným, privátním, interním nebo virtuálním vlastnostem, které nemají žádnou základní implementaci.

  • Nelze vytvořit vazbu k veřejným polím.

  • Typ vlastnosti deklarované ve vaší třídě je typ, který je předán vazbě. Typ, který vazba nakonec používá, závisí na typu vazby cílové vlastnosti, nikoli na vlastnosti zdroje vazby. Pokud existuje rozdíl v typu, můžete chtít napsat převaděč pro zpracování způsobu, jakým je vaše vlastní vlastnost původně předána vazbě. Další informace najdete na webu IValueConverter.

Celé objekty jako zdroj vazby

Jako zdroj vazby můžete použít celý objekt. Zadejte zdroj vazby pomocí Source vlastnosti nebo vlastnosti a pak zadejte prázdnou DataContext deklaraci vazby: {Binding}. Mezi scénáře, ve kterých je to užitečné, patří vazby na objekty typu string, vazby na objekty s více vlastnostmi, které vás zajímají, nebo vazby na objekty kolekce. Příklad vazby k celému objektu kolekce naleznete v tématu Použití vzoru master-detail s hierarchickými daty (.NET Framework).

Možná budete muset použít vlastní logiku, aby data byla pro vlastnost vašeho cíle smysluplná. Vlastní logika může být ve formě vlastního převaděče nebo DataTemplate. Další informace o převaděčích naleznete v tématu Převod dat. Další informace o šablonách dat najdete v tématu Přehled šablon dat (.NET Framework).

Objekty kolekce jako zdroj vazby

Často je objekt, který chcete použít jako zdroj vazby, kolekcí vlastních objektů. Každý objekt slouží jako zdroj pro jednu instanci opakované vazby. Můžete CustomerOrders mít například kolekci, která se skládá z CustomerOrder objektů, kde vaše aplikace iteruje nad kolekcí, abyste zjistili, kolik objednávek existuje a kolik dat v každé objednávce obsahuje.

Můžete vytvořit výčet všech kolekcí, které implementují rozhraní IEnumerable. Pokud ale chcete nastavit dynamické vazby tak, aby vložení nebo odstranění v kolekci automaticky aktualizovalo uživatelské rozhraní, musí kolekce implementovat rozhraní INotifyCollectionChanged. Toto rozhraní zveřejňuje událost, která musí být vyvolána při každé změně podkladové kolekce.

Třída ObservableCollection<T> je integrovaná implementace kolekce dat, která zveřejňuje INotifyCollectionChanged rozhraní. Jednotlivé datové objekty v kolekci musí splňovat požadavky popsané v předchozích částech. Příklad naleznete v tématu Vytvoření a vytvoření vazby na ObservableCollection (.NET Framework). Než implementujete vlastní kolekci, zvažte použití ObservableCollection<T> nebo některou z existujících tříd kolekcí, například List<T>, Collection<T>a BindingList<T>, mimo jiné.

Když jako zdroj vazby zadáte kolekci, WPF se neváže přímo s kolekcí. Místo toho WPF ve skutečnosti vytvoří vazbu na výchozí zobrazení kolekce. Informace o výchozích zobrazeních najdete v tématu Použití výchozího zobrazení.

Pokud máte pokročilý scénář a chcete implementovat vlastní kolekci, zvažte použití IList rozhraní. Toto rozhraní poskytuje ne generickou kolekci objektů, ke kterým lze individuálně přistupovat pomocí indexu, což může zlepšit výkon.

Požadavky na oprávnění v datové vazbě

Na rozdíl od rozhraní .NET Framework běží .NET s úplným zabezpečením důvěryhodnosti. Všechny datové vazby se spouští se stejným přístupem jako uživatel, který aplikaci spouští.

Viz také