我目前正在創建一些測試控件。在WPF中一切都很好,我可以繼承例如邊框或滾動查看器。在Silverlight中,這是不可能的,所以我必須做一個小動作(多目標)...從Silverlight派生的最佳未密封UI元素
我從StackPanel派生我的測試元素,並添加內容作爲孩子。當然,我也可以從WrapPanel,Canvas派生出來。我的問題是,當使用這種方法時,Silverlight中的哪個UI元素(不是密封的)是最佳使用方式。它應儘可能少地干擾測試元素。或者我必須在元素之間進行細分(例如寬度設置)。
讓我舉一個更好的例子。如果我想要一個簡單的TextBlock,它總是說「你好」,並有一個紅色的背景。在WPF中,我繼承了TextBlock。這在Silverlight中是不可能的。在那裏,我會例如這樣做:
public class RedTextBlock : StackPanel
{
public TextBlock WrappedBlock {get; private set;}
public RedTextBlock()
{
WrappedBlock = new TextBlock
{
Text = "Hello",
Background = new SolidColorBrush(Colors.Red)
};
Children.Add(WrappedBlock);
}
}
我不是很喜歡這個解決方案,但還沒找到更好的解決方案。但在這種情況下,我不確定StackPanel是否不適合我的示例。因爲我認爲它可能會影響佈局(例如儘可能多地佔用空間)與直接文本塊實例相反。
在其他情況下,包含控件可能是一個ScrollViewer,一個圖像,無論..所有控件,我不能「正確」,因爲它們是密封的子類。
這種方法是否可行,哪種控制方式最適合在這種通用情況下進行子類化處理,還是有更好的想法? (我不想去「界面 - 查看屬性」的方式,我真的想繼承現有UI元素)如果你想堆東西..
克里斯
是的,我正在使用他們的一些東西,但大多數時候我需要更復雜的東西。只是最簡單的例子,但感謝提示.. – 2009-11-04 19:29:58