共用方式為


HOW TO:處理大型 XAML 檔案

XAML 能夠表示複雜的資料結構。 因此,部分 XAML 檔案可能會變得很大。 例如,向量影像的 XAML 表示可能有幾個 MB 這麼大。 大型 XAML 檔案可能會在 WPF Designer for Visual Studio 中導致效能問題。 下列程序可協助您處理大型 XAML 區塊導致的效能問題。

僅 XAML 檢視

當您在 Visual Studio 中處理大型 XAML 檔案時,改善效能的最佳方式就是不要使用 WPF Designer中的 [設計] 檢視。 在 Visual Studio 中編輯 XAML 而不使用 [設計] 檢視的方式有兩種。

第一種方式是關閉 [設計] 檢視,只使用 [XAML] 檢視。 您可以變更 [文字編輯器] 選項,指定 XAML 檔案只能在完整的 [XAML] 檢視中開啟。 藉由使用這種方式,您就能有完整的 XAML 編輯支援、[文件大綱] 視窗和標記導覽。

第二種方式是使用原始程式碼編輯器。 您可以使用 [開啟方式] 對話方塊,在原始程式碼編輯器中開啟 XAML 檔案。 這是最輕量的方式,處理大型 XAML 檔案的效能最佳。 您會有完整的 XAML 編輯支援,但看不到 [文件大綱] 視窗和標記導覽。

若要在完整 XAML 檢視中開啟 XAML 檔案

若要在原始程式碼編輯器中開啟 XAML 檔案

  1. 在 [方案總管] 中,以滑鼠右鍵按一下要開啟的 XAML 檔案。

  2. 選取捷徑功能表上的 [開啟方式]。

  3. 在 [開啟方式] 對話方塊中選取 [原始程式碼 (文字) 編輯器],然後按一下 [確定]。

    XAML 檔案就會在程式碼編輯器中開啟。

設計檢視

您可以使用 [設計] 檢視來處理大型 XAML 區塊,但可能會遇到效能問題。 下列建議可能有助於改善效能。

若要改善設計檢視處理大型 XAML 區塊的效能

  • 將大型 XAML 區塊移至另一個 UserControl。 藉由使用這種方式,您就可以將大型 XAML 檔案加入到設計介面,而對效能的影響最小。

  • 將大型 XAML 區塊移至 XAML 資源檔。 如果這個資源檔與自訂控制項相關聯,則大型 XAML 檔案就只會在設計工具開啟該自訂控制項時載入。

  • 重組 XAML 的結構,將包含大型 XAML 區塊的更新減至最少。

    下列程式碼範例示範一個 Canvas 項目,其中包含描述影像的大型 XAML 區塊。 如果變更其中一個同層級按鈕控制項,會強制父方格及其所有子系更新。 更新有大型 XAML 區塊的 Canvas 項目可能會拖慢效能。

    <Window x:Class="WpfApplication1.MainWindow"
        xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="300" Width="300">
        <Grid>
            <Canvas>
                <!-- Many paths describing an image. -->
            </Canvas>
            <Button />
            <Button />
            <Button />
        </Grid>
    </Window>
    

    下列程式碼顯示如何重組前面的 XAML 結構,以避免發生效能問題。

    <Window x:Class="WpfApplication2.MainWindow"
        xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="300" Width="300">
        <Grid>
            <Canvas>
                <!-- Many paths describing an image. -->
            </Canvas>
    
            <Grid>
                <Button />
                <Button />
                <Button />
            </Grid>
        </Grid>
    </Window>
    

    按鈕控制項不再是 Canvas 項目的同層級,而變更其中一個按鈕也不會強制 Canvas 項目更新。

請參閱

參考

選項],文字編輯器] 中,XAML 中,格式設定

概念

WPF 和 Silverlight 設計工具載入失敗疑難排解

其他資源

WPF 設計工具中的 XAML 和程式碼

WPF 設計工具的錯誤偵錯和解譯