XamlReader.ReadSubtree 方法

定義

傳回以目前 XamlReader 為基礎的 XamlReader,而傳回的 XamlReader 可用來逐一查看 XAML 節點結構的子樹狀結構。

C#
public virtual System.Xaml.XamlReader ReadSubtree();

傳回

子樹狀結構的新 XAML 讀取器執行個體。

備註

這個方法具有預設實作,並傳回有效的 XamlReader 。 傳回的 XamlReader 是限制特定 XamlReader 動作的內部類別。 限制與唯讀取 XAML 節點集較大來源的維度子樹的目的一致,以及在結束子樹時傳回檔案結尾或 null 目前節點。

一般而言,您應該從初始 Read 檢查目前的節點,以判斷是否需要子樹讀取器。 您檢查此情況的方式可能是實作特定的;不過,請避免為每個子樹建立多個子樹讀取器。 此外,請避免針對特定節點案例叫用子樹讀取器 (例如,例如 NamespaceDeclaration 無法包含節點子樹的) 。

取得子樹讀取器之後,您必須呼叫 Read 該讀取器,以取得目前的節點 (或呼叫 Skip 以取得下一個節點) 。 建立子樹讀取器時,您不會自動從子樹讀取器取得初始節點位置。

您從這個預設實作呼叫 ReadSubtree 取得的讀取器是內部類別。 內部類別是以 XamlReader 呼叫 時 ReadSubtree 所使用的實作為基礎。 內部類別的目的是包裝 Read 和 一般周遊行為。 周遊會藉由追蹤 StartMember/EndMember 配對或 StartObject/EndObject 配對,保留在預定的子樹內。 當讀取器位於子樹的結尾時,它也會正確針對 和 trueIsEof 傳回 falseRead ,如其進入點所定義。 一般而言,假設您從子樹讀取器呼叫的任何 XamlReader API 都有與整體 XamlReader 相同的實作,但周遊界限行為除外。

不過, ReadSubtree 是虛擬的。 因此,特定 XamlReader 實作可以提供與內部包裝函式行為不同的 XamlReader 行為;而 XamlReader 實作甚至可以藉由傳回 NotImplementedException 或其他例外狀況來停用子樹讀取器功能。

適用於

產品 版本
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10