Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln beskriver funktionerna för dynamisk databindning i System.Xml.Linq namnområdet. Dessa funktioner kan användas som datakälla för användargränssnittselement (UI) i WPF-appar (Windows Presentation Foundation). Det här scenariot förlitar sig på särskilda dynamiska egenskaper för System.Xml.Linq.XAttribute och System.Xml.Linq.XElement.
XAML och LINQ till XML
XAML (Extensible Application Markup Language) är en XML-dialekt som skapats av Microsoft för att stödja .NET-tekniker. Den används i WPF för att representera användargränssnittselement och relaterade funktioner, till exempel händelser och databindning. I Windows Workflow Foundation används XAML för att representera programstruktur, till exempel programkontroll (arbetsflöden). Med XAML kan deklarativa aspekterna av en teknik separeras från den relaterade procedurkoden som definierar det mer individualiserade beteendet för ett program.
Det finns två breda sätt som XAML och LINQ till XML kan interagera på:
Eftersom XAML-filer är välformulerade XML kan de efterfrågas och manipuleras via XML-tekniker som LINQ till XML.
Eftersom LINQ till XML-frågor representerar en datakälla kan dessa frågor användas som datakälla för databindning för WPF-gränssnittselement.
Den här dokumentationen beskriver det andra scenariot.
Databindning i Windows Presentation Foundation
WPF-databindning gör det möjligt för ett gränssnittselement att associera en av dess egenskaper med en datakälla. Ett enkelt exempel på detta är en Label vars text visar värdet för en offentlig egenskap i ett användardefinierat objekt. WPF-databindning förlitar sig på följande komponenter:
| Komponent | Beskrivning | 
|---|---|
| Bindningsmål | Användargränssnittselementet som ska associeras med datakällan. Visuella element i WPF härleds från UIElement-klassen. | 
| Målfastighet | Beroendeegenskapen för bindningsmålet som återspeglar värdet för databindningskällan. Beroendeegenskaper stöds direkt av DependencyObject klassen, som UIElement härleds från. | 
| Bindningskälla | Källobjektet för ett eller flera värden som skickas till användargränssnittselementet för presentation. WPF stöder automatiskt följande typer som bindningskällor: CLR-objekt, ADO.NET dataobjekt, XML-data (från XPath eller LINQ till XML-frågor) eller en annan DependencyObject. | 
| Källsökväg | Egenskapen för den bindningskälla som matchar värdet eller uppsättningen med värden som ska bindas. | 
En beroendeegenskap är ett begrepp som är specifikt för WPF som representerar en dynamiskt beräknad egenskap för ett gränssnittselement. Beroendeegenskaper har till exempel ofta standardvärden eller värden som tillhandahålls av ett överordnat element. Dessa särskilda egenskaper backas upp av instanser av DependencyProperty klassen (och inte fält som med standardegenskaper). Mer information hittar du i översikt över beroendeegenskaper.
Dynamisk databindning i WPF
Som standard sker databindning endast när målgränssnittselementet initieras. Detta kallas engångsbindning . För de flesta ändamål är detta otillräckligt. Normalt kräver en databindningslösning att ändringarna sprids dynamiskt vid körning med något av följande:
Enkelriktad bindning gör att ändringarna på ena sidan sprids automatiskt. Oftast återspeglas ändringar i källan i målet, men det omvända kan ibland vara användbart.
I tvåvägsbindning sprids ändringar till källan automatiskt till målet och ändringar i målet sprids automatiskt till källan.
För att envägs- eller tvåvägsbindning ska ske måste källan implementera en mekanism för ändringsmeddelanden, till exempel genom att implementera INotifyPropertyChanged gränssnittet eller med hjälp av ett PropertyNameChanged-mönster för varje egenskap som stöds.
Mer information om databindning i WPF finns i Databindning (WPF).
Dynamiska egenskaper i LINQ till XML-klasser
De flesta LINQ-till XML-klasser kvalificerar sig inte som rätt WPF-dynamiska datakällor. En del av den mest användbara informationen är endast tillgänglig via metoder, inte egenskaper, och egenskaper i dessa klasser implementerar inte ändringsmeddelanden. För att stödja WPF-databindning exponerar LINQ till XML en uppsättning dynamiska egenskaper.
Dessa dynamiska egenskaper är särskilda körningsegenskaper som duplicerar funktionerna i befintliga metoder och egenskaper i klasserna XAttribute och XElement . De har lagts till i dessa klasser enbart för att göra det möjligt för dem att fungera som dynamiska datakällor för WPF. För att uppfylla detta behov implementerar alla dessa dynamiska egenskaper ändringsmeddelanden. En detaljerad referens för dessa dynamiska egenskaper finns i nästa avsnitt, LINQ till DYNAMISKA XML-egenskaper.
Anmärkning
Många av de offentliga standardegenskaperna som finns i de olika klasserna i System.Xml.Linq namnområdet kan användas för engångsdatabindning. Kom dock ihåg att varken källan eller målet kommer att uppdateras dynamiskt enligt det här schemat.
Få åtkomst till dynamiska egenskaper
Dynamiska egenskaper i klasserna XAttribute och XElement kan inte nås som standardegenskaper. I CLR-kompatibla språk som C# kan de till exempel inte vara:
Nås direkt vid kompileringstillfället. Dynamiska egenskaper är osynliga för kompilatorn och Visual Studio IntelliSense.
Identifieras eller nås under körning med hjälp av .NET reflection. Även vid körning är de inte egenskaper i grundläggande CLR-mening.
I C# kan dynamiska egenskaper endast nås vid körning via de faciliteter som tillhandahålls av System.ComponentModel namnområdet.
Däremot kan dynamiska egenskaper i en XML-källa nås genom en enkel notation enligt följande form:
<object>.<dynamic-property>
De dynamiska egenskaperna för dessa två klasser avsätts antingen till ett värde som kan användas direkt eller till en indexerare som måste förses med ett index för att erhålla det resulterande värdet eller en samling av värden. Den senare syntaxen har formatet:
<object>.<dynamic-property>[<index-value>]
Mer information finns i LINQ till XML dynamiska egenskaper.
För att implementera dynamisk WPF-bindning används dynamiska egenskaper med faciliteter som tillhandahålls av System.Windows.Data namnområdet, framför allt Binding klassen.
Se även
.NET Desktop feedback