2009-02-19 49 views
3

我使用橢圓和其他形狀作爲屏幕標記,我希望其他人能夠使用模板更改這些視覺效果。但是,由於形狀不支持模板,我不得不創建一個基本的UserControl,它默認顯示一個橢圓,然後使用它代替基本形狀。一個輕量級的可模板WPF形狀

有沒有人有一個整潔的解決方案?我有點擔心,如果我在屏幕上創建1000個這樣的性能/內存會有一點開銷。

+0

您是否得到了這個工作?你可以提供你的結果的任何細節? – 2009-02-24 14:01:13

回答

3

UserControl派生自ContentControl。它不聽起來好像你需要的內容(託管您的形狀內的其他控件的能力),所以我會繼續上漲的層次......

這裏是祖先的細分:

UserControl 
    ContentControl 
     Control 
      FrameworkElement 
       UIElement 
        Visual 
         ... 

Control定義Template屬性,所以我想實現的最輕的方式,你想要的是使用Control

<Control Style="{StaticResource MyStyle}"/> 

...並使用Style設置您需要的模板,任何觸發器的/ etc 。

然而,如果你確實需要承載您的形狀內部的子元素,你應該使用ContentControl這樣的:

<ContentControl Style="{StaticResource MyStyle}"/> 

如果發現這種方式過於重量級的在運行,那麼你可以考慮使用Shape

Shape 
    FrameworkElement 
     UIElement 
      Visual 
       ... 

Shape不會ControlFrameworkElement繼承,而是直接。它不可模版化。這是一個抽象類,您需要創建自己的定製子類,以瞭解如何通過DefiningGeometry屬性描述其自己的演示文稿。這可能比定義Control上的樣式更復雜,但如果您需要額外的性能,那麼您可能必須走這條路線。

編輯您可能也想看看DrawingVisual以及。來自MSDN:

DrawingVisual是一個輕量級繪圖類,用於呈現形狀,圖像或文本。這個類被認爲是輕量級的,因爲它不提供佈局或事件處理,從而提高了它的性能。

它也不是可模板化的,但如果您需要原始性能,那麼值得一看。