XamlReader Class

定義

WPF の既定の XAML リーダーおよび関連付けられている XAML オブジェクト ライターを使用して、XAML 入力を読み取り、オブジェクト グラフを作成します。 Reads XAML input and creates an object graph, using the WPF default XAML reader and an associated XAML object writer.

public class XamlReader
継承
XamlReader

次の例では、変換、Buttonを使用して文字列に、XamlWriterクラス。The following example converts a Button into a string using the XamlWriter class. 文字列に再度読み込んで、Button静的LoadメソッドをXamlReaderクラス。The string is then loaded back into a Button using the static Load method on the XamlReader class.

// 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)

注釈

同期Loadメソッドは静的では、非同期LoadAsyncメソッドは静的でないと、インスタンスが必要、XamlReaderクラスを使用します。The synchronous Load methods are static, but the asynchronous LoadAsync methods are not static and require an instance of the XamlReader class to use.

出力、Loadメソッドが作成されたオブジェクト ツリーまたはオブジェクト グラフのルート オブジェクトを表す 1 つのオブジェクト。The output of the Load methods is a single object, which represents the root object of a created object tree or object graph. オブジェクトによって作成されるグラフXamlReaderは通常、実行時に WPF アプリケーションの既存のオブジェクト ツリーに追加します。Object graphs that are created by XamlReader are typically added to the existing object tree of a WPF application at run time. それ以外の場合、新しいオブジェクトのグラフは、WPF アプリケーション モデルのため切断されたと見なされます。Otherwise the new object graph is considered disconnected for purposes of the WPF application model. つまり、WPF アプリケーションのメイン オブジェクト ツリーに適用できませんとしてオブジェクト ツリーの手法のいずれかのアクセスを使用して、レンダリングされません (Api など、 FindNameLogicalTreeHelperVisualTreeHelper)。This means that it does not render, and cannot be accessed using any of the object tree techniques as applied to the WPF application's main object tree (for example, the APIs FindName, LogicalTreeHelper, VisualTreeHelper). オブジェクト ツリーの概念の詳細については、次を参照してください。 WPF のツリーします。For more information on object tree concepts, see Trees in WPF.

XamlReader 次の主なシナリオをサポートしています。XamlReader supports the following primary scenarios:

  • 複製/オブジェクト ファクトリ: せず、追加のメカニズム、参照型一般に含めることができませんで WPF オブジェクトのツリー内の 1 つ以上の位置。Cloning/object factory: Without additional mechanisms, a reference type generally cannot be included in more than one position in a WPF object tree. (を共有するためのサポートを提供または WPF で再利用できる追加のメカニズムの例は、オブジェクトに基づくFreezableなどの一般的な共有可能なオブジェクトのサポートまたはBrushから項目として参照される、 ResourceDictionary)。使用して、オブジェクトのシリアル化に既に存在するオブジェクトを複製する方法の 1 つのオブジェクト ツリーはXamlWriter.Saveします。(Examples of additional mechanisms that offer support for sharing or re-use in WPF include objects that are based on Freezable, or support for commonly shareable objects such as Brush that are referenced as an item from a ResourceDictionary.) One way to clone an object that is already in the object tree is to serialize the object using XamlWriter.Save. シリアル化された文字列入力として使用する呼び出しをLoad、ストリームまたはXmlReader媒介手段として。You then use the serialized string as input for a call to Load, with a stream or XmlReader as an intermediary.

  • ジャストイン タイムの情報に基づくオブジェクトのコンストラクト: 多くの場合、遅延バインディングまたはユーザー指定の入力が既存のオブジェクトの状態を変更するには、その他の方法があります。Constructing objects based on just-in-time information: There are often other ways to have late-binding or user-supplied input change the state of existing objects. たとえば、1 つ以上のプロパティを設定する同じ値を使用またはデータ バインディングを使用できます。For example you could use the same value to set more than one property, or use data binding. シナリオを作成するオブジェクトの型もだけ確定またはユーザーの操作で実行時にした場合の文字列を構築することによりこのようなオブジェクトを作成し、Load入力は便利な手法がよくあります。But if you have a scenario where even the type of object to create is only determinable at run time or with user interaction, then creating such an object by building up a string for Load input is often a useful technique.

  • 既存のリソースの手法を使用して:Stream型が頻繁に使用の他のフレームワーク テクノロジまたは同様の状況においてアプリケーションの境界を越えてオブジェクトやデータを転送するためです。Using existing resource techniques: The Stream type is used frequently in other frameworks or technologies for transferring data or objects across application boundaries or for similar situations. 使用することができますし、Stream格納または最終的に、アプリケーションの一部としてオブジェクトを作成するために使用する、XAML 形式のデータを取得するための手法です。You can then use the Stream techniques to store or obtain XAML-formatted data that you eventually use to create an object as part of your application.

  • ドキュメントを修正しました: アプリケーションは、WPF アプリケーションのオブジェクト ツリーと UI に含めることのローカルまたはダウンロードしたの XPS ドキュメントを読み込む可能性があります。Fixed documents: Your application might load local or downloaded XPS documents for inclusion in a WPF application object tree and UI.

注意

場合によって、このドキュメントでは、オブジェクト ツリーではなく、オブジェクト グラフについて説明します。This documentation sometimes describes an object graph, as opposed to an object tree. 厳密な親子関係は常に存在しない実行時の WPF アプリケーションの実行時のオブジェクトのリレーションシップでので、オブジェクト グラフがより広く適用可能な用語。A strict parent-child relationship does not always exist in the run time object relationships of a run time WPF application, so an object graph is a more widely applicable terminology. ただし、WPF には、2 つの異なるツリー概念 Api も含まれているため (LogicalTreeHelperVisualTreeHelper) WPF では、ほとんどの現実の場合に、木のたとえを適切にも該当します。However, because WPF also includes two different tree conceptualization APIs (LogicalTreeHelper, VisualTreeHelper) the tree metaphor still applies adequately to most real-world cases in WPF. XAML 言語の観点からオブジェクト グラフは多くの場合、最善の方法について考慮する、XAML からオブジェクトを作成する方法、XAML 言語そのもので必ずしも指定されていないため、複数のリレーションシップを表示するヘルパー クラスの方法論にします。ツリー構造でもう一度使用します。From the XAML language perspective however, the object graph is often the best way to think about how objects are created out of XAML, because the XAML language itself does not necessarily specify helper class methodologies that bring the relationships more into a tree structure again.

コード アクセス セキュリティ、Loose XAML、および XamlReaderCode Access Security, Loose XAML, and XamlReader

XAML は、オブジェクトのインスタンス化と実行を直接表すマークアップ言語です。XAML is a markup language that directly represents object instantiation and execution. そのため、対応する生成 (ネットワーク アクセス、ファイル システムの IO など) のシステム リソースと対話するのと同じ機能のある要素の XAML で作成したコードは。Therefore, elements created in XAML have the same ability to interact with system resources (network access, file system IO, for example) as the equivalent generated code does.

WPFWPF サポート、.NET.NETセキュリティ フレームワークコード アクセス セキュリティ (CAS)Code Access Security (CAS)します。 supports the .NET.NET security framework コード アクセス セキュリティ (CAS)Code Access Security (CAS). つまり、WPFWPFインターネット ゾーンで実行されているコンテンツが実行のアクセス許可を削減します。This means that WPFWPF content running in the internet zone has reduced execution permissions. "Loose XAML"(コンパイルされない XAML ページ XAML ビューアーでの読み込み時に解釈) とXAML ブラウザー アプリケーション (XBAP)XAML browser application (XBAP)このインターネット ゾーンでは、通常実行して、同じアクセス許可セットを使用します。"Loose XAML" (pages of noncompiled XAML interpreted at load time by a XAML viewer) and XAML ブラウザー アプリケーション (XBAP)XAML browser application (XBAP) are usually run in this internet zone and use the same permission set. ただしに完全に信頼されたアプリケーションに読み込まれた XAML では、ホスト アプリケーションのようにシステム リソースに同じアクセス権があります。However, XAML loaded in to a fully trusted application has the same access to the system resources as the hosting application does. 詳細については、次を参照してください。 WPF 部分信頼セキュリティします。For more information, see WPF Partial Trust Security.

これらのステートメントの場合の影響XamlReaderは、アプリケーションの設計がロードする場合、XAML について信頼の決定を行う必要があります。The implications of these statements for XamlReader is that your application design must make trust decisions about the XAML you decide to load. 信頼されていない XAML を読み込む場合は、生成されたオブジェクト グラフを読み込む方法について、独自のサンド ボックス化手法の実装を検討してください。If you are loading XAML that is not trusted, consider implementing your own sandboxing technique for how you load the resulting object graph.

XamlReader 部分信頼コードから呼び出すこともできます。XamlReader can also be called by partial trust code. この場合は、インターネット セキュリティ ゾーンは、コード アクセス セキュリティの適用されます。In this case, Internet security zone is applied for code access security. 読み込まれた XAML 内のあらゆるものがインターネット セキュリティ ゾーンで有効な場合は、XAML 解析の例外がスローされます。If anything in the loaded XAML is invalid under Internet security zone, a XAML parse exception is thrown. XBAP とプラットフォーム レベルでは、部分信頼であるその他のケースでXamlReader一部である、実行の明示的な部分的な信頼の呼び出しと同様、同じ例外動作を取得します。Under XBAP and other cases that are partial trust at the platform level, where XamlReader is part of the execution, you get the same exception behavior as with explicit partial trust calls.

XAML の WPF、XAML リーダー/ライター、および XAML 言語のバージョン管理WPF XAML, XAML Readers/Writers, and XAML Language Versioning

XAML2009 などの言語機能を含むX:referenceX:factorymethodします。XAML2009 includes language features such as x:Reference and x:FactoryMethod. 署名を使用することができますLoadまたはParseをこれらの機能を使用して XAML を読み込みます。You can use signatures of Load or Parse to load XAML that uses these features. ただし、これらの言語機能が XAML マークアップのコンパイルをする必要があるためサポートされていません (などの XAML、ページビルド WPF アプリケーション、またはビルド アクションで、マークアップ コンパイルのタスクを含むすべて XAML でのアクション)。However, those language features are not supported for XAML that needs to be markup compiled (such as XAML for the Page build action in a WPF application, or any XAML that involves the markup compile task in the build actions).

WPF 型と WPF テクノロジ一般に WPF の内部構造へのアクセスに依存する概念がサポートします。WPF types and the WPF technology in general support concepts that rely on access to WPF internals. たとえば、WPF 依存関係プロパティを実装する方法は、内部型メンバーの効率的な検索手法に依存します。For instance, how WPF implements dependency properties relies on internal techniques for efficient type-member lookup. 読み取りと書き込みで提供される Api の XAML でこれらの内部構造へのアクセスが有効になってXamlWriterXamlReaderから、System.Windows.Markup名前空間と PresentationFramework アセンブリ。Access to these internals is enabled by the XAML reading and writing APIs provided in XamlWriter and XamlReader from the System.Windows.Markup namespace and PresentationFramework assembly. ただし、下位レベルの XAML リーダーと XAML ライター System.Xaml アセンブリから (クラスに基づいたSystem.Xaml.XamlReaderSystem.Xaml.XamlWriter) WPF 内部にアクセスすることはありません。However, the lower-level XAML readers and XAML writers from the System.Xaml assembly (classes based on System.Xaml.XamlReader, System.Xaml.XamlWriter) do not have access to the WPF internals. System.Xaml からどのアセンブリでも WPF 固有の依存関係はありません。There is no dependency from System.Xaml to any WPF-specific assembly. WPF の内部構造にアクセスできなければ、System.Xaml のリーダーとライターに正常に読み込むことができませんまたは型、または型で WPF 型に基づくすべての WPF 保存します。Without access to the WPF internals, System.Xaml readers and writers cannot correctly load or save all WPF types, or types based on WPF types. 具体的には、System.Xaml のリーダーとライターが、この WPF 依存関係プロパティがプロパティ ストア、または WPF でのスタイル、リソース ディクショナリ、およびテンプレートの使用方法の詳細をすべてのバックアップなどの概念を理解するはありません。In particular, the System.Xaml readers and writers do not understand concepts such as the WPF dependency property backing property store, or all the specifics of how WPF uses styles, resource dictionaries and templates. そのため、選択することがある場合。Therefore you have a choice to make:

  • WPF の型を読み込む場合、または任意の方法での BAML 形式で XAML を使用している場合は、PresentationFramework XAML リーダーと XAML ライターを使用します。If you are loading WPF types, and/or you are using XAML in BAML form in any way, use the PresentationFramework XAML readers and XAML writers.

  • 任意の WPF 型または、XAML の BAML 形式には依存しないして上の理由からそのフレームワークに固有の特定のテクノロジの別の XAML リーダーまたは XAML ライターの実装を使用しない場合は、System.Xaml の XAML リーダーと XAML ライターを使用します。If you are not relying on any WPF types or the BAML form of XAML, and are not using another specific technology's XAML reader or XAML writer implementation for reasons that are specific to that framework, use the System.Xaml XAML readers and XAML writers.

System.Xaml のバッキング .NET 4 での実装System.Xaml Backing Implementation in .NET 4

XamlReader WPF フレームワーク レベルの XAML パーサーの呼び出し可能な API サーフェイスです。XamlReader is the callable API surface for the WPF framework-level XAML parser. 基になるのと同じ XAML パーサーでは、実行時の XAML 読み込みとを対象とする WPF アプリケーションの解析も実行します.NET Framework 3.0.NET Framework 3.0.NET Framework 3.5.NET Framework 3.5します。The same underlying XAML parser also performs the run-time XAML loading and parsing for WPF applications that target .NET Framework 3.0.NET Framework 3.0 and .NET Framework 3.5.NET Framework 3.5.

対象としている場合.NET Framework 4.NET Framework 4、外部 API、同じですが、実装の部分は上に構築された、.NET Framework 4.NET Framework 4を XAML の解析中の技術とレポートの側面の多くを向上させる System.Xaml アセンブリでの一般的な XAML 実装します。If you are targeting .NET Framework 4.NET Framework 4, the external API is the same, but parts of the implementation are built on the .NET Framework 4.NET Framework 4 general XAML implementation in the System.Xaml assembly, which improves many of the technical and reporting aspects of parsing XAML. 対象とする.NET Framework 4.NET Framework 4など System.Xaml 実装の詳細と、参照として System.Xaml から報告された例外がありますが必要ですが型を定義するとは限りません。Targeting .NET Framework 4.NET Framework 4 necessarily entails including System.Xaml as a reference, and details of implementation such as the exceptions reported may come from System.Xaml defined types.

コンストラクター

XamlReader()

XamlReader クラスの新しいインスタンスを初期化します。 Initializes a new instance of the XamlReader class.

方法

CancelAsync()

非同期読み込み操作が保留中である場合、現在の非同期読み込み操作を中止します。 Aborts the current asynchronous load operation, if there is an asynchronous load operation pending.

Equals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。 Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode()

既定のハッシュ関数として機能します。 Serves as the default hash function.

(Inherited from Object)
GetType()

現在のインスタンスの Type を取得します。 Gets the Type of the current instance.

(Inherited from Object)
GetWpfSchemaContext()

XamlSchemaContext の WPF スキーマ コンテキスト設定を表す XamlReader オブジェクトを返します。 Returns a XamlSchemaContext object that represents the WPF schema context settings for a XamlReader.

Load(Stream)

指定した Stream 内の XAML 入力を読み取り、対応するオブジェクト ツリーのルートである Object を返します。 Reads the XAML input in the specified Stream and returns an Object that is the root of the corresponding object tree.

Load(Stream, ParserContext)

指定した Stream 内の XAML 入力を読み取り、対応するオブジェクト ツリーのルートであるオブジェクトを返します。 Reads the XAML input in the specified Stream and returns an object that is the root of the corresponding object tree.

Load(XamlReader)

指定した XamlReader を使用して XAML 入力を読み取り、対応するオブジェクト ツリーのルートであるオブジェクトを返します。 Reads the XAML input through a provided XamlReader and returns an object that is the root of the corresponding object tree.

Load(XmlReader)

指定した XmlReader 内の XAML 入力を読み取り、対応するオブジェクト ツリーのルートであるオブジェクトを返します。 Reads the XAML input in the specified XmlReader and returns an object that is the root of the corresponding object tree.

LoadAsync(Stream)

指定した Stream 内の XAML 入力を読み取り、対応するオブジェクト ツリーのルートを返します。 Reads the XAML input in the specified Stream and returns the root of the corresponding object tree.

LoadAsync(Stream, ParserContext)

指定した Stream 内の XAML 入力を読み取り、対応するオブジェクト ツリーのルートを返します。 Reads the XAML input in the specified Stream and returns the root of the corresponding object tree.

LoadAsync(XmlReader)

指定した XmlReader 内の XAML 入力を読み取り、対応するオブジェクト ツリーのルートを返します。 Reads the XAML input in the specified XmlReader and returns the root of the corresponding object tree.

MemberwiseClone()

現在の Object の簡易コピーを作成します。 Creates a shallow copy of the current Object.

(Inherited from Object)
Parse(String)

指定したテキスト文字列内の XAML 入力を読み取り、指定したマークアップのルートに対応するオブジェクトを返します。 Reads the XAML input in the specified text string and returns an object that corresponds to the root of the specified markup.

Parse(String, ParserContext)

指定したテキスト文字列 (指定した ParserContext を使用) 内の XAML マークアップを読み取り、指定したマークアップのルートに対応するオブジェクトを返します。 Reads the XAML markup in the specified text string (using a specified ParserContext) and returns an object that corresponds to the root of the specified markup.

ToString()

現在のオブジェクトを表す文字列を返します。 Returns a string that represents the current object.

(Inherited from Object)

イベント

LoadCompleted

非同期の読み込み操作の完了時に発生します。 Occurs when an asynchronous load operation completes.

適用対象

こちらもご覧ください