對不起,如果這個問題過於簡單,但我很難弄清楚如何創建背景來控制 - 希望能夠提高應用性能。皮膚控制背景 - 更好的性能?
我有9個不同的控件。他們都有背景。背景由圖像,其他控件或兩者組成。所有這些背景都有另一個背景。
想想像Powerpoint這樣的幻燈片,幻燈片佈局和幻燈片母版 - 按此順序繼承。我有9張幻燈片/控件。
- 第3個控制具有相同的 「控制佈局」(姑且稱之爲 ControlLayout1)。 ControlLayout1從ControlMaster1獲取它的一些元素。
- 第二個3控件也具有相同的控件佈局,但它與第一個控件不同。我們稱之爲ControlLayout2。它也 繼承自ControlMaster1。
- 3個控件的最終集合再次不同。我們可以稱它們爲 ControlLayout3。但是這一次,他們繼承了不同的主人 - ControlMaster2。
現在在每個控件中,我每次都單獨寫出所有的XAML。我認爲必須有一種方法,不要在每個項目中寫入這些內容。理想情況下,我想創建的是一組可重用的XAML。
下面是一些僞XAML:
然後某處ControlLayouts(我不知道,像Application.Resources或其他地方)
<Canvas x:Name="ControlLayout1">
<MyMasterBackground (ControlMaster1)/>
</Canvas>
<Canvas x:Name="ControlLayout2">
<MyMasterBackground (ControlMaster1)/>
<TextBox Text="The Control 2">
</Canvas>
<Canvas x:Name="ControlLayout3">
<MyMasterBackground (ControlMaster2)/>
<TextBox Text="The Control 3">
</Canvas>
再來說ControlMasters
<Canvas x:Name="ControlMaster1">
<Canvas.Background>
<ImageBrush ImageSource="/Images/image1.jpg" />
</Canvas.Background>
</Canvas>
<Canvas x:Name="ControlMaster2">
<Canvas.Background>
<ImageBrush ImageSource="/Images/image2.jpg" />
</Canvas.Background>
<TextBox Text="Control Master 1">
</Canvas>
一旦定義,ControlLayouts和ControlMaster永遠不需要改變 - 它們是靜態的。
除了只有一個較小的XAP,如果我可以將這些全部放在一個位置並重用XAML,我希望在我的應用程序中提高性能,因爲ControlLayouts會自動獲取BitmapCached或類似的東西。所以首先,是否有一個很好的策略來實現上述(ControlLayouts和Masters沒有任何代碼隱藏)?其次,在加載Control1,Control2等時性能會得到改善?最後,如果它們是純粹的usercontrols(即它們有一些代碼),那對性能會更好嗎?
在此先感謝!
如果你想讓靜態的東西成爲BitmapCached,你應該手動設置它。某些東西是[自動緩存](http://msdn.microsoft.com/en-us/library/ff602285(v = vs.95).aspx),但根據我的經驗手動設置它可以產生很大的差異,尤其是當您將UI元素轉移到很多地方並看到生澀的表現時。 – 2012-02-23 04:45:40