Přehled datové vazby WPF s LINQ to XML

Tento článek představuje funkce dynamické datové vazby v System.Xml.Linq oboru názvů. Tyto funkce lze použít jako zdroj dat pro prvky uživatelského rozhraní (UI) v aplikacích WINDOWS Presentation Foundation (WPF). Tento scénář spoléhá na speciální dynamické vlastnostiSystem.Xml.Linq.XAttribute a System.Xml.Linq.XElement.

XAML a LINQ to XML

Jazyk XAML (Extensible Application Markup Language) je dialekt XML vytvořený Microsoftem pro podporu technologií .NET. Používá se ve WPF k reprezentaci prvků uživatelského rozhraní a souvisejících funkcí, jako jsou události a datové vazby. Ve Windows Workflow Foundation se XAML používá k reprezentaci struktury programu, jako je řízení programů (pracovní postupy). XAML umožňuje deklarativní aspekty technologie oddělit od souvisejícího procedurálního kódu, který definuje individualizované chování programu.

Xaml a LINQ to XML můžou interagovat dvěma způsoby:

  • Vzhledem k tomu, že soubory XAML jsou ve správném formátu XML, je možné je dotazovat a manipulovat prostřednictvím technologií XML, jako je LINQ to XML.

  • Vzhledem k tomu, že dotazy LINQ to XML představují zdroj dat, lze tyto dotazy použít jako zdroj dat pro datové vazby pro prvky uživatelského rozhraní WPF.

Tato dokumentace popisuje druhý scénář.

Datová vazba ve Windows Presentation Foundation

Datová vazba WPF umožňuje prvku uživatelského rozhraní přidružit jednu z jejích vlastností ke zdroji dat. Jednoduchým příkladem je Label , jehož text představuje hodnotu veřejné vlastnosti v objektu definovaném uživatelem. Datová vazba WPF spoléhá na následující komponenty:

Součást Popis
Cíl vazby Prvek uživatelského rozhraní, který se má přidružit ke zdroji dat. Vizuální prvky v WPF jsou odvozeny z UIElement třídy.
Vlastnost cíle Vlastnost závislosti cíle vazby, která odráží hodnotu zdroje datové vazby. Vlastnosti závislostí jsou přímo podporovány DependencyObject třídou, která UIElement je odvozena.
Zdroj vazby Zdrojový objekt pro jednu nebo více hodnot, které jsou zadány do prvku uživatelského rozhraní pro prezentaci. WPF automaticky podporuje následující typy jako zdroje vazeb: objekty CLR, ADO.NET datové objekty, data XML (z XPath nebo LINQ to XML dotazy) nebo jiné DependencyObject.
Zdrojová cesta Vlastnost zdroje vazby, která se překládá na hodnotu nebo sadu hodnot, které mají být vázány.

Vlastnost závislosti je koncept specifický pro WPF, který představuje dynamicky vypočítanou vlastnost prvku uživatelského rozhraní. Vlastnosti závislostí například často mají výchozí hodnoty nebo hodnoty, které jsou poskytovány nadřazeným prvkem. Tyto speciální vlastnosti jsou podporovány instancemi DependencyProperty třídy (a nikoli poli jako u standardních vlastností). Další informace naleznete v tématu Přehled vlastností závislostí.

Dynamická datová vazba ve WPF

Ve výchozím nastavení dojde k datové vazbě pouze v případě, že je inicializován cílový prvek uživatelského rozhraní. Tato vazba se nazývá jednorázová vazba. Pro většinu účelů to není dostatečné; Řešení datové vazby obvykle vyžaduje, aby se změny dynamicky rozšířily za běhu pomocí jedné z následujících možností:

  • Jednosměrná vazba způsobí automatické šíření změn na jedné straně. Změny ve zdroji se většinou projeví v cíli, ale opak může být někdy užitečný.

  • V obousměrné vazbě se změny ve zdroji automaticky rozšíří do cíle a změny cíle se automaticky rozšíří do zdroje.

Aby došlo k jednosměrné nebo obousměrné vazbě, musí zdroj implementovat mechanismus oznámení o změnách, například implementací INotifyPropertyChanged rozhraní nebo použitím vzoru PropertyNameChanged pro každou podporovanou vlastnost.

Další informace o datové vazbě ve WPF naleznete v tématu Datové vazby (WPF).

Dynamické vlastnosti ve třídách LINQ to XML

Většina tříd LINQ to XML nemá nárok na správné dynamické zdroje dat WPF. Některé z nejužitečnějších informací jsou k dispozici pouze prostřednictvím metod, nikoli vlastností a vlastností v těchto třídách neimplementují oznámení o změnách. Pro podporu datové vazby WPF zpřístupňuje LINQ to XML sadu dynamických vlastností.

Tyto dynamické vlastnosti jsou speciální vlastnosti doby běhu, které duplikují funkce existujících metod a vlastností ve XAttributeXElement třídách. Do těchto tříd byly přidány výhradně proto, aby fungovaly jako dynamické zdroje dat pro WPF. Pro splnění této potřeby implementují všechny tyto dynamické vlastnosti oznámení o změnách. Podrobné referenční informace o těchto dynamických vlastnostech najdete v další části LINQ to XML Dynamic Properties.

Poznámka:

Mnoho standardních veřejných vlastností, které se nacházejí v různých třídách v System.Xml.Linq oboru názvů, lze použít pro jednorázovou datovou vazbu. Mějte však na paměti, že zdroj ani cíl nebudou dynamicky aktualizovány v rámci tohoto schématu.

Přístup k dynamickým vlastnostem

Dynamické vlastnosti v třídách XAttributeXElement nelze získat přístup, jako jsou standardní vlastnosti. Například v jazycích kompatibilních s CLR, jako je C#, nemůžou být:

  • Přístup přímo v době kompilace. Dynamické vlastnosti jsou pro kompilátor a Visual Studio IntelliSense neviditelné.

  • Zjištěné nebo přístupné za běhu pomocí reflexe .NET I v době běhu nejsou vlastnosti v základním smyslu CLR.

V jazyce C# je možné k dynamickým vlastnostem přistupovat pouze za běhu prostřednictvím zařízení poskytovaných oborem System.ComponentModel názvů.

Naproti tomu ve zdrojových dynamických vlastnostech XML lze získat přístup prostřednictvím jednoduchého zápisu v následujícím formátu:

<object>.<dynamic-property>

Dynamické vlastnosti těchto dvou tříd se přeloží na hodnotu, kterou lze použít přímo, nebo indexer, který musí být dodán s indexem k získání výsledné hodnoty nebo kolekce hodnot. Druhá syntaxe má tvar:

<object>.<dynamic-property>[<index-value>]

Další informace naleznete v tématu LINQ to XML Dynamic Properties.

K implementaci dynamické vazby WPF se dynamické vlastnosti použijí se zařízeními poskytovanými oborem System.Windows.Data názvů, zejména Binding třídou.

Viz také