我使用橢圓和其他形狀作爲屏幕標記,我希望其他人能夠使用模板更改這些視覺效果。但是,由於形狀不支持模板,我不得不創建一個基本的UserControl,它默認顯示一個橢圓,然後使用它代替基本形狀。一個輕量級的可模板WPF形狀
有沒有人有一個整潔的解決方案?我有點擔心,如果我在屏幕上創建1000個這樣的性能/內存會有一點開銷。
我使用橢圓和其他形狀作爲屏幕標記,我希望其他人能夠使用模板更改這些視覺效果。但是,由於形狀不支持模板,我不得不創建一個基本的UserControl,它默認顯示一個橢圓,然後使用它代替基本形狀。一個輕量級的可模板WPF形狀
有沒有人有一個整潔的解決方案?我有點擔心,如果我在屏幕上創建1000個這樣的性能/內存會有一點開銷。
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
不會Control
從FrameworkElement
繼承,而是直接。它不可模版化。這是一個抽象類,您需要創建自己的定製子類,以瞭解如何通過DefiningGeometry
屬性描述其自己的演示文稿。這可能比定義Control
上的樣式更復雜,但如果您需要額外的性能,那麼您可能必須走這條路線。
編輯您可能也想看看DrawingVisual以及。來自MSDN:
DrawingVisual是一個輕量級繪圖類,用於呈現形狀,圖像或文本。這個類被認爲是輕量級的,因爲它不提供佈局或事件處理,從而提高了它的性能。
它也不是可模板化的,但如果您需要原始性能,那麼值得一看。
您是否得到了這個工作?你可以提供你的結果的任何細節? – 2009-02-24 14:01:13