2011-10-05 77 views
3

我有一個具有視圖區域的應用程序。在視圖區域包含一個網格,該網格將包含一系列控件,如圖像,列表視圖,數據網格和文本。WPF在後臺渲染控件

一次只能看到一個視圖,因爲只有一個視圖區域。目前,當執行操作以使新視圖處於活動狀態時,我呈現視圖並將其設置爲視圖區域的子視圖。某些視圖需要幾秒鐘才能呈現,因此這裏存在延遲。

我想在應用程序第一次加載時呈現所有10個視圖,然後在調用時只抓取相應的視圖。我一直無法做到這一點。我的許多視圖項目都採用比例大小,網格使用星形來表示行和列的大小,所以看起來,直到視圖綁定到可視區域,才能計算所有大小,它並不實際執行任何渲染。

例如,我的數據網格在打開所有列設置爲20寬度後仍然彈開,然後將它們對齊到正確的寬度。您可以在屏幕上直觀地注意到這一點,通過窄列進行初始繪製,然後將它們全部展開以填充數據網格區域。

我想要在後臺做所有的工作,然後一旦完成顯示最終產品。

回答

0

控件只有具有容器後才能執行最終渲染。也許嘗試託管意見不同。也許可以將頁面視爲頁面並將頁面放置在框架中。我不保證這樣做會更快,但需要注意。你可以使用標籤?我很確定一個tabitem重用了最後一次渲染或至少是最後一次渲染的一部分。優化您的個人觀點。 GridView通常比DataGrid更快,但可能沒有您需要的功能。對於需要速度的表格,我使用GridView並根據數據設置列寬度--100行和40列在1.0秒內渲染,然後我將它放在Tabitem中,如果我回到選項卡(在它已經呈現一次)它在0.1秒內呈現。如果某個視圖有大量滾動的數據,則嘗試虛擬化。或者在同一列/行中加載多個幀,並且每次只能有一個可見。

0

您可以嘗試擁有一個與主體大小相同的獨立視圖區域,但它隱藏在主體的後面,並將所有10個視圖作爲該視圖的子視圖,以便它們以適當的大小呈現,然後根據需要將它們交換爲主要文件...