Přehled datové vazby WPF s LINQ to XML
Tento článek představuje funkce dynamické datové vazby v oboru názvů System.Xml.Linq. 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í programu (pracovních postupů). 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:
Komponenta | Popis |
---|---|
Závazný cíl | 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. |
Cílová vlastnost | Vlastnost závislosti cíle vazby, která odráží hodnotu zdroje datové vazby. Vlastnosti závislostí jsou přímo podporovány třídou DependencyObject, ze které je UIElement odvozena. |
Zdroj vazby | Zdrojový objekt pro jednu nebo více hodnot, které jsou zadány do prvku uživatelského rozhraní pro prezentaci. WPF podporuje jako zdroje datových vazeb následující typy: objekty CLR, datové objekty ADO.NET, XML data (z dotazů XPath nebo LINQ to XML), 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 třídy DependencyProperty (a nikoli poli jako u standardních vlastností). Další informace najdete v tématu Přehled vlastností závislosti.
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í. Tomu se říká 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í, že se změny automaticky projeví 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 případě obousměrné vazby se změny ve zdroji automaticky rozšíří do cíle a změny v cíli se automaticky rozšíří do zdroje.
Aby došlo k jednosměrné nebo obousměrné vazbě, musí zdroj implementovat mechanismus oznámení změn, například implementací rozhraní INotifyPropertyChanged nebo použitím PropertyNameChanged vzoru 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 LINQ to XML zpřístupňuje sadu dynamických vlastností.
Tyto dynamické vlastnosti jsou speciální vlastnosti za běhu, které duplikují funkcionalitu existujících metod a vlastností ve třídách XAttribute a XElement. 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 nazvané LINQ to XML Dynamické vlastnosti.
Poznámka
Mnoho standardních veřejných vlastností, které se nacházejí v různých třídách v oboru názvů System.Xml.Linq, 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 ve třídách XAttribute a XElement nelze přistupovat stejně jako ke standardním vlastnostem. 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é během běhu aplikace pomocí reflexe .NET. I během běhu programu nejsou vlastnostmi 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 názvů System.ComponentModel.
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 budou použity dynamické vlastnosti s nástroji poskytovanými oborem názvů System.Windows.Data, zejména třídy Binding.
Viz také
- datové vazby WPF s LINQ to XML
- Dynamické vlastnosti LINQ to XML
- XAML v WPF
- Datové vazby (WPF)
- použití značek pracovního postupu
.NET Desktop feedback