XamlReader Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Přečte vstup XAML a vytvoří graf objektů pomocí výchozí čtečky XAML WPF (Windows Presentation Foundation) a přidruženého zapisovače objektů XAML.
public ref class XamlReader
public class XamlReader
type XamlReader = class
Public Class XamlReader
- Dědičnost
-
XamlReader
Příklady
Následující příklad převede řetězec Button pomocí XamlWriter třídy. Řetězec se pak načte zpět do Button statické Load metody ve XamlReader třídě.
// Create the Button.
Button originalButton = new Button();
originalButton.Height = 50;
originalButton.Width = 100;
originalButton.Background = Brushes.AliceBlue;
originalButton.Content = "Click Me";
// Save the Button to a string.
string savedButton = XamlWriter.Save(originalButton);
// Load the button
StringReader stringReader = new StringReader(savedButton);
XmlReader xmlReader = XmlReader.Create(stringReader);
Button readerLoadButton = (Button)XamlReader.Load(xmlReader);
' Create the Button.
Dim originalButton As New Button()
originalButton.Height = 50
originalButton.Width = 100
originalButton.Background = Brushes.AliceBlue
originalButton.Content = "Click Me"
' Save the Button to a string.
Dim savedButton As String = XamlWriter.Save(originalButton)
' Load the button
Dim stringReader As New StringReader(savedButton)
Dim xmlReader As XmlReader = XmlReader.Create(stringReader)
Dim readerLoadButton As Button = CType(XamlReader.Load(xmlReader), Button)
Poznámky
Synchronní Load metody jsou statické, ale asynchronní LoadAsync metody nejsou statické a vyžadují instanci XamlReader třídy, která se má použít.
Výstupem Load metod je jeden objekt, který představuje kořenový objekt vytvořeného stromu objektů nebo grafu objektu. Objektové grafy vytvořené pomocí XamlReader jsou obvykle přidány do existujícího stromu objektů aplikace WPF (Windows Presentation Foundation) za běhu. V opačném případě se nový objektový graf považuje za odpojený pro účely aplikačního modelu WPF (Windows Presentation Foundation). To znamená, že se nevykresluje a nelze k němu přistupovat pomocí žádné techniky stromového stromu objektů, které se použijí pro hlavní strom objektů aplikace WPF (Windows Presentation Foundation) (například rozhraní API FindName, LogicalTreeHelper, VisualTreeHelper). Další informace o konceptech stromu objektů naleznete v tématu Stromy ve WPF (Windows Presentation Foundation).
XamlReader podporuje následující primární scénáře:
Klonování/objektová továrna: Bez dalších mechanismů nelze obecně zahrnout odkazový typ do více než jedné pozice ve stromu objektů WPF (Windows Presentation Foundation). (Mezi příklady dalších mechanismů, které nabízejí podporu sdílení nebo opětovného použití ve WPF (Windows Presentation Foundation), patří objekty založené na Freezableobjektech nebo podpora běžně sdíletelných objektů, jako Brush jsou odkazy na položku z objektu ResourceDictionary.) Jedním ze způsobů, jak klonovat objekt, který je již ve stromu objektů, je serializovat objekt pomocí XamlWriter.Save. Pak použijete serializovaný řetězec jako vstup pro volání Load, se streamem nebo XmlReader jako zprostředkovatel.
Vytváření objektů na základě informací za běhu: Často existují i jiné způsoby, jak změnit stav existujících objektů pozdní vazby nebo zadání uživatelem. Stejnou hodnotu můžete například použít k nastavení více než jedné vlastnosti nebo použití datové vazby. Pokud ale máte scénář, ve kterém je i typ objektu, který se má vytvořit, determinovatelný pouze v době běhu nebo s interakcí uživatele, pak vytvoření takového objektu vytvořením řetězce pro Load vstup je často užitečnou technikou.
Použití existujících technik prostředků: Typ Stream se často používá v jiných architekturách nebo technologiích pro přenos dat nebo objektů přes hranice aplikace nebo pro podobné situace. Pomocí Stream technik pak můžete uložit nebo získat data formátovaná XAML, která nakonec použijete k vytvoření objektu v rámci aplikace.
Opravené dokumenty: Aplikace může načíst místní nebo stažené dokumenty XPS pro zahrnutí do stromu objektů aplikace WPF (Windows Presentation Foundation) a uživatelského rozhraní.
Note
Tato dokumentace někdy popisuje graf objektů, nikoli strom objektů. V relacích objektů doby běhu aplikace WPF (Windows Presentation Foundation) v době běhu neexistuje striktní vztah nadřazený-podřízený, takže graf objektů je obecnější terminologií. Vzhledem k tomu, že WPF (Windows Presentation Foundation) obsahuje také dvě různá rozhraní API pro konceptualizaci stromu (LogicalTreeHelper, VisualTreeHelper), metafora stromu stále platí adekvátně pro většinu reálných případů ve WPF (Windows Presentation Foundation). Z hlediska jazyka XAML je však graf objektů často nejlepším způsobem, jak se zamyslet nad tím, jak se objekty vytvářejí z XAML, protože samotný jazyk XAML nemusí nutně určovat pomocné metodologie tříd, které přinesou relace více do struktury stromu.
Zabezpečení přístupu kódu, volné XAML a XamlReader
XAML je jazyk využívající značky, který přímo reprezentuje vytváření instancí objektů a jejich spouštění. Proto prvky vytvořené v XAML mají stejnou schopnost pracovat se systémovými prostředky (síťový přístup, vstupně-výstupní operace systému souborů, například) jako ekvivalentní vygenerovaný kód.
WPF (Windows Presentation Foundation) podporuje rozhraní .NET Security Code Access Security (CAS). To znamená, že obsah WPF (Windows Presentation Foundation) spuštěný v internetové zóně má omezená oprávnění ke spuštění. "Volné XAML" (stránky nekomilovaného XAML interpretovaného při načítání prohlížečem XAML) a aplikace prohlížeče XAML (XBAP) se obvykle spouští v této internetové zóně a používají stejnou sadu oprávnění. Xaml načtený do plně důvěryhodné aplikace má ale stejný přístup k systémovým prostředkům jako hostitelská aplikace. Další informace najdete v tématu Zabezpečení částečné důvěryhodnosti WPF (Windows Presentation Foundation).
Důsledky těchto příkazů XamlReader jsou, že návrh vaší aplikace musí rozhodovat o důvěryhodnosti o xaml, který se rozhodnete načíst. Pokud načítáte XAML, který není důvěryhodný, zvažte implementaci vlastní techniky sandboxu pro načtení výsledného grafu objektu.
XamlReader lze také volat částečným kódem důvěryhodnosti. V tomto případě se pro zabezpečení přístupu kódu použije zóna zabezpečení internetu. Pokud je v zóně zabezpečení internetu neplatný nějaký kód XAML, vyvolá se výjimka analýzy XAML. V rámci XBAP a dalších případů, které jsou částečné důvěryhodnosti na úrovni platformy, kde XamlReader je součástí provádění, získáte stejné chování výjimek jako u explicitních částečných volání důvěryhodnosti.
WPF (Windows Presentation Foundation) XAML, čtenáři a zapisovače XAML a správa verzí jazyka XAML
XAML2009 zahrnuje jazykové funkce, jako jsou x:Reference a x:FactoryMethod. Můžete použít podpisy nebo LoadParse načíst XAML, který tyto funkce používá. Tyto jazykové funkce však nejsou podporovány pro XAML, které musí být zkompilovány značek (například XAML pro akci sestavení stránky v aplikaci WPF (Windows Presentation Foundation) nebo jakýkoli XAML, který zahrnuje úlohu kompilace značek v akcích sestavení).
Typy WPF (Windows Presentation Foundation) a technologie WPF (Windows Presentation Foundation) obecně podporují koncepty, které spoléhají na přístup k interním funkcím WPF (Windows Presentation Foundation). Například způsob, jakým WPF (Windows Presentation Foundation) implementuje vlastnosti závislostí, závisí na interních technikách efektivního vyhledávání členů typu. Přístup k těmto interním objektům umožňuje rozhraní API pro čtení a zápis XAML, která jsou k dispozici v XamlWriter a XamlReader z System.Windows.Markup oboru názvů a sestavení PresentationFramework. Čtenáři XAML a zapisovače XAML nižší úrovně ze sestavení System.Xaml (třídy založené na System.Xaml.XamlReaderSystem.Xaml.XamlWriter) však nemají přístup k interním objektům WPF (Windows Presentation Foundation). Neexistuje žádná závislost ze System.Xaml na žádné sestavení specifické pro WPF (Windows Presentation Foundation). Bez přístupu k interním prvkům WPF (Windows Presentation Foundation) nemohou čtečky System.Xaml a zapisovače správně načíst nebo uložit všechny typy WPF (Windows Presentation Foundation) nebo typy založené na typech WPF (Windows Presentation Foundation). Zejména čtenáři a zapisovače System.Xaml nerozumí konceptům, jako je například úložiště vlastností závislostí WPF (Windows Presentation Foundation), nebo všechny specifika způsobu, jakým WPF (Windows Presentation Foundation) používá styly, slovníky prostředků a šablony. Proto máte možnost:
Pokud načítáte typy WPF (Windows Presentation Foundation) a/nebo používáte XAML ve formátu BAML jakýmkoli způsobem, použijte čtečky XAML PresentationFramework a zapisovače XAML.
Pokud se nespoléháte na žádné typy WPF (Windows Presentation Foundation) nebo formát BAML XAML a nepoužíváte jinou specifickou technologii čtení XAML ani implementaci zapisovače XAML z důvodů, které jsou specifické pro danou architekturu, použijte čtečky Xaml System.Xaml a zapisovače XAML.
Implementace backingu System.Xaml v .NET 4
XamlReader je volatelná plocha rozhraní API pro analyzátor XAML na úrovni architektury WPF (Windows Presentation Foundation). Stejný základní analyzátor XAML také provádí načítání a analýzu XAML za běhu pro aplikace WPF (Windows Presentation Foundation), které cílí na rozhraní .NET Framework 3.0 a .NET Framework 3.5.
Pokud cílíte na rozhraní .NET Framework 4, externí rozhraní API je stejné, ale části implementace jsou založené na obecné implementaci XAML rozhraní .NET Framework 4 v sestavení System.Xaml, což zlepšuje mnoho technických aspektů a vytváření sestav analýzy XAML. Cílení na rozhraní .NET Framework 4 nutně zahrnuje zahrnutí System.Xaml jako odkazu a podrobnosti implementace, jako jsou hlášené výjimky, mohou pocházet z definovaných typů System.Xaml.
Konstruktory
| Name | Description |
|---|---|
| XamlReader() |
Inicializuje novou instanci XamlReader třídy. |
Metody
| Name | Description |
|---|---|
| CancelAsync() |
Přeruší aktuální asynchronní operaci načítání, pokud čeká asynchronní operace načítání. |
| Equals(Object) |
Určuje, zda je zadaný objekt roven aktuálnímu objektu. (Zděděno od Object) |
| GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
| GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
| GetWpfSchemaContext() |
XamlSchemaContext Vrátí objekt, který představuje nastavení kontextu schématu WPF (Windows Presentation Foundation) pro objekt .XamlReader |
| Load(Stream, Boolean) |
Přečte vstup XAML a vytvoří graf objektů pomocí výchozí čtečky XAML WPF (Windows Presentation Foundation) a přidruženého zapisovače objektů XAML. |
| Load(Stream, ParserContext, Boolean) |
Přečte vstup XAML a vytvoří graf objektů pomocí výchozí čtečky XAML WPF (Windows Presentation Foundation) a přidruženého zapisovače objektů XAML. |
| Load(Stream, ParserContext) |
Přečte vstup XAML v zadaném Stream objektu a vrátí objekt, který je kořenem odpovídajícího stromu objektů. |
| Load(Stream) |
Načte vstup XAML v zadaném zadaném StreamObject objektu a vrátí kořen odpovídajícího stromu objektů. |
| Load(XamlReader) |
Načte vstup XAML prostřednictvím zadaného XamlReader objektu a vrátí objekt, který je kořenem odpovídajícího stromu objektů. |
| Load(XmlReader, Boolean) |
Přečte vstup XAML a vytvoří graf objektů pomocí výchozí čtečky XAML WPF (Windows Presentation Foundation) a přidruženého zapisovače objektů XAML. |
| Load(XmlReader) |
Přečte vstup XAML v zadaném XmlReader objektu a vrátí objekt, který je kořenem odpovídajícího stromu objektů. |
| LoadAsync(Stream, Boolean) |
Přečte vstup XAML a vytvoří graf objektů pomocí výchozí čtečky XAML WPF (Windows Presentation Foundation) a přidruženého zapisovače objektů XAML. |
| LoadAsync(Stream, ParserContext, Boolean) |
Přečte vstup XAML a vytvoří graf objektů pomocí výchozí čtečky XAML WPF (Windows Presentation Foundation) a přidruženého zapisovače objektů XAML. |
| LoadAsync(Stream, ParserContext) |
Načte vstup XAML v zadaném zadaném Stream objektu a vrátí kořen odpovídajícího stromu objektů. |
| LoadAsync(Stream) |
Načte vstup XAML v zadaném zadaném Stream objektu a vrátí kořen odpovídajícího stromu objektů. |
| LoadAsync(XmlReader, Boolean) |
Přečte vstup XAML a vytvoří graf objektů pomocí výchozí čtečky XAML WPF (Windows Presentation Foundation) a přidruženého zapisovače objektů XAML. |
| LoadAsync(XmlReader) |
Načte vstup XAML v zadaném zadaném XmlReader objektu a vrátí kořen odpovídajícího stromu objektů. |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
| Parse(String, Boolean) |
Přečte vstup XAML a vytvoří graf objektů pomocí výchozí čtečky XAML WPF (Windows Presentation Foundation) a přidruženého zapisovače objektů XAML. |
| Parse(String, ParserContext, Boolean) |
Přečte vstup XAML a vytvoří graf objektů pomocí výchozí čtečky XAML WPF (Windows Presentation Foundation) a přidruženého zapisovače objektů XAML. |
| Parse(String, ParserContext) |
Přečte kód XAML v zadaném textovém řetězci (pomocí zadaného ParserContext) a vrátí objekt, který odpovídá kořenovému adresáři zadaného kódu. |
| Parse(String) |
Přečte vstup XAML v zadaném textovém řetězci a vrátí objekt, který odpovídá kořenovému adresáři zadaného kódu. |
| ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
Událost
| Name | Description |
|---|---|
| LoadCompleted |
Nastane, když se dokončí asynchronní operace načítání. |