XamlReader XamlReader XamlReader XamlReader Class

定義

WPF の既定の XAML リーダーおよび関連付けられている XAML オブジェクト ライターを使用して、XAML 入力を読み取り、オブジェクト グラフを作成します。

public ref class XamlReader
public class XamlReader
type XamlReader = class
Public Class XamlReader
継承
XamlReaderXamlReaderXamlReaderXamlReader

次の例では、変換、Buttonを使用して文字列に、XamlWriterクラス。 文字列に再度読み込んで、Button静的LoadメソッドをXamlReaderクラス。

// 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クラスを使用します。

出力、Loadメソッドが作成されたオブジェクト ツリーまたはオブジェクト グラフのルート オブジェクトを表す 1 つのオブジェクト。 オブジェクトによって作成されるグラフXamlReaderは通常、実行時に WPF アプリケーションの既存のオブジェクト ツリーに追加します。 それ以外の場合、新しいオブジェクトのグラフは、WPF アプリケーション モデルのため切断されたと見なされます。 つまり、WPF アプリケーションのメイン オブジェクト ツリーに適用できませんとしてオブジェクト ツリーの手法のいずれかのアクセスを使用して、レンダリングされません (Api など、 FindNameLogicalTreeHelperVisualTreeHelper)。 オブジェクト ツリーの概念の詳細については、次を参照してください。 WPF のツリーします。

XamlReader 次の主なシナリオをサポートしています。

  • 複製/オブジェクト ファクトリ: せず、追加のメカニズム、参照型一般に含めることができませんで WPF オブジェクトのツリー内の 1 つ以上の位置。 (を共有するためのサポートを提供または WPF で再利用できる追加のメカニズムの例は、オブジェクトに基づくFreezableなどの一般的な共有可能なオブジェクトのサポートまたはBrushから項目として参照される、 ResourceDictionary)。使用して、オブジェクトのシリアル化に既に存在するオブジェクトを複製する方法の 1 つのオブジェクト ツリーはXamlWriter.Saveします。 シリアル化された文字列入力として使用する呼び出しをLoad、ストリームまたはXmlReader媒介手段として。

  • ジャストイン タイムの情報に基づくオブジェクトのコンストラクト: 多くの場合、遅延バインディングまたはユーザー指定の入力が既存のオブジェクトの状態を変更するには、その他の方法があります。 たとえば、1 つ以上のプロパティを設定する同じ値を使用またはデータ バインディングを使用できます。 シナリオを作成するオブジェクトの型もだけ確定またはユーザーの操作で実行時にした場合の文字列を構築することによりこのようなオブジェクトを作成し、Load入力は便利な手法がよくあります。

  • 既存のリソースの手法を使用して:Stream型が頻繁に使用の他のフレームワーク テクノロジまたは同様の状況においてアプリケーションの境界を越えてオブジェクトやデータを転送するためです。 使用することができますし、Stream格納または最終的に、アプリケーションの一部としてオブジェクトを作成するために使用する、XAML 形式のデータを取得するための手法です。

  • ドキュメントを修正しました: アプリケーションは、WPF アプリケーションのオブジェクト ツリーと UI に含めることのローカルまたはダウンロードしたの XPS ドキュメントを読み込む可能性があります。

注意

場合によって、このドキュメントでは、オブジェクト ツリーではなく、オブジェクト グラフについて説明します。 厳密な親子関係は常に存在しない実行時の WPF アプリケーションの実行時のオブジェクトのリレーションシップでので、オブジェクト グラフがより広く適用可能な用語。 ただし、WPF には、2 つの異なるツリー概念 Api も含まれているため (LogicalTreeHelperVisualTreeHelper) WPF では、ほとんどの現実の場合に、木のたとえを適切にも該当します。 XAML 言語の観点からオブジェクト グラフは多くの場合、最善の方法について考慮する、XAML からオブジェクトを作成する方法、XAML 言語そのもので必ずしも指定されていないため、複数のリレーションシップを表示するヘルパー クラスの方法論にします。ツリー構造でもう一度使用します。

コード アクセス セキュリティ、Loose XAML、および XamlReader

XAML は、オブジェクトのインスタンス化と実行を直接表すマークアップ言語です。 そのため、対応する生成 (ネットワーク アクセス、ファイル システムの IO など) のシステム リソースと対話するのと同じ機能のある要素の XAML で作成したコードは。

WPF サポート、.NETセキュリティ フレームワークコード アクセス セキュリティ (CAS)します。 つまり、WPFインターネット ゾーンで実行されているコンテンツが実行のアクセス許可を削減します。 "Loose XAML"(コンパイルされない XAML ページ XAML ビューアーでの読み込み時に解釈) とXAML ブラウザー アプリケーション (XBAP)このインターネット ゾーンでは、通常実行して、同じアクセス許可セットを使用します。 ただしに完全に信頼されたアプリケーションに読み込まれた XAML では、ホスト アプリケーションのようにシステム リソースに同じアクセス権があります。 詳細については、次を参照してください。 WPF 部分信頼セキュリティします。

これらのステートメントの場合の影響XamlReaderは、アプリケーションの設計がロードする場合、XAML について信頼の決定を行う必要があります。 信頼されていない XAML を読み込む場合は、生成されたオブジェクト グラフを読み込む方法について、独自のサンド ボックス化手法の実装を検討してください。

XamlReader 部分信頼コードから呼び出すこともできます。 この場合は、インターネット セキュリティ ゾーンは、コード アクセス セキュリティの適用されます。 読み込まれた XAML 内のあらゆるものがインターネット セキュリティ ゾーンで有効な場合は、XAML 解析の例外がスローされます。 XBAP とプラットフォーム レベルでは、部分信頼であるその他のケースでXamlReader一部である、実行の明示的な部分的な信頼の呼び出しと同様、同じ例外動作を取得します。

XAML の WPF、XAML リーダー/ライター、および XAML 言語のバージョン管理

XAML2009 などの言語機能を含むX:referenceX:factorymethodします。 署名を使用することができますLoadまたはParseをこれらの機能を使用して XAML を読み込みます。 ただし、これらの言語機能が XAML マークアップのコンパイルをする必要があるためサポートされていません (などの XAML、ページビルド WPF アプリケーション、またはビルド アクションで、マークアップ コンパイルのタスクを含むすべて XAML でのアクション)。

WPF 型と WPF テクノロジ一般に WPF の内部構造へのアクセスに依存する概念がサポートします。 たとえば、WPF 依存関係プロパティを実装する方法は、内部型メンバーの効率的な検索手法に依存します。 読み取りと書き込みで提供される Api の XAML でこれらの内部構造へのアクセスが有効になってXamlWriterXamlReaderから、System.Windows.Markup名前空間と PresentationFramework アセンブリ。 ただし、下位レベルの XAML リーダーと XAML ライター System.Xaml アセンブリから (クラスに基づいたSystem.Xaml.XamlReaderSystem.Xaml.XamlWriter) WPF 内部にアクセスすることはありません。 System.Xaml からどのアセンブリでも WPF 固有の依存関係はありません。 WPF の内部構造にアクセスできなければ、System.Xaml のリーダーとライターに正常に読み込むことができませんまたは型、または型で WPF 型に基づくすべての WPF 保存します。 具体的には、System.Xaml のリーダーとライターが、この WPF 依存関係プロパティがプロパティ ストア、または WPF でのスタイル、リソース ディクショナリ、およびテンプレートの使用方法の詳細をすべてのバックアップなどの概念を理解するはありません。 そのため、選択することがある場合。

  • WPF の型を読み込む場合、または任意の方法での BAML 形式で XAML を使用している場合は、PresentationFramework XAML リーダーと XAML ライターを使用します。

  • 任意の WPF 型または、XAML の BAML 形式には依存しないして上の理由からそのフレームワークに固有の特定のテクノロジの別の XAML リーダーまたは XAML ライターの実装を使用しない場合は、System.Xaml の XAML リーダーと XAML ライターを使用します。

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

XamlReader WPF フレームワーク レベルの XAML パーサーの呼び出し可能な API サーフェイスです。 基になるのと同じ XAML パーサーでは、実行時の XAML 読み込みとを対象とする WPF アプリケーションの解析も実行します.NET Framework 3.0と.NET Framework 3.5します。

対象としている場合.NET Framework 4、外部 API、同じですが、実装の部分は上に構築された、.NET Framework 4を XAML の解析中の技術とレポートの側面の多くを向上させる System.Xaml アセンブリでの一般的な XAML 実装します。 対象とする.NET Framework 4など System.Xaml 実装の詳細と、参照として System.Xaml から報告された例外がありますが必要ですが型を定義するとは限りません。

コンストラクター

XamlReader() XamlReader() XamlReader() XamlReader()

XamlReader クラスの新しいインスタンスを初期化します。

メソッド

CancelAsync() CancelAsync() CancelAsync() CancelAsync()

非同期読み込み操作が保留中である場合、現在の非同期読み込み操作を中止します。

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

既定のハッシュ関数として機能します。

(Inherited from Object)
GetType() GetType() GetType() GetType()

現在のインスタンスの Type を取得します。

(Inherited from Object)
GetWpfSchemaContext() GetWpfSchemaContext() GetWpfSchemaContext() GetWpfSchemaContext()

XamlSchemaContext の WPF スキーマ コンテキスト設定を表す XamlReader オブジェクトを返します。

Load(Stream) Load(Stream) Load(Stream) Load(Stream)

指定した Stream 内の XAML 入力を読み取り、対応するオブジェクト ツリーのルートである Object を返します。

Load(Stream, ParserContext) Load(Stream, ParserContext) Load(Stream, ParserContext) Load(Stream, ParserContext)

指定した Stream 内の XAML 入力を読み取り、対応するオブジェクト ツリーのルートであるオブジェクトを返します。

Load(XamlReader) Load(XamlReader) Load(XamlReader) Load(XamlReader)

指定した XamlReader を使用して XAML 入力を読み取り、対応するオブジェクト ツリーのルートであるオブジェクトを返します。

Load(XmlReader) Load(XmlReader) Load(XmlReader) Load(XmlReader)

指定した XmlReader 内の XAML 入力を読み取り、対応するオブジェクト ツリーのルートであるオブジェクトを返します。

LoadAsync(Stream) LoadAsync(Stream) LoadAsync(Stream) LoadAsync(Stream)

指定した Stream 内の XAML 入力を読み取り、対応するオブジェクト ツリーのルートを返します。

LoadAsync(Stream, ParserContext) LoadAsync(Stream, ParserContext) LoadAsync(Stream, ParserContext) LoadAsync(Stream, ParserContext)

指定した Stream 内の XAML 入力を読み取り、対応するオブジェクト ツリーのルートを返します。

LoadAsync(XmlReader) LoadAsync(XmlReader) LoadAsync(XmlReader) LoadAsync(XmlReader)

指定した XmlReader 内の XAML 入力を読み取り、対応するオブジェクト ツリーのルートを返します。

MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

現在の Object の簡易コピーを作成します。

(Inherited from Object)
Parse(String) Parse(String) Parse(String) Parse(String)

指定したテキスト文字列内の XAML 入力を読み取り、指定したマークアップのルートに対応するオブジェクトを返します。

Parse(String, ParserContext) Parse(String, ParserContext) Parse(String, ParserContext) Parse(String, ParserContext)

指定したテキスト文字列 (指定した ParserContext を使用) 内の XAML マークアップを読み取り、指定したマークアップのルートに対応するオブジェクトを返します。

ToString() ToString() ToString() ToString()

現在のオブジェクトを表す文字列を返します。

(Inherited from Object)

イベント

LoadCompleted LoadCompleted LoadCompleted LoadCompleted

非同期の読み込み操作の完了時に発生します。

適用対象

こちらもご覧ください