2009-12-17 38 views
11

我只是在Silverlight中弄溼了自己的腳,並沒有真正理解創建UserControl與爲相同任務創建控件的差異和優點/缺點(如在右鍵單擊Expression中的選區時混合,例如)。何時在Silverlight中使用UserControl與Control?

看起來好像選擇「Make Into Control」只是爲您指定的基本類型創建一個新模板,而創建一個UserControl會創建一個全新的基類。那是對的嗎?

Screenshot http://tinyurl.com/yjsaox9

在這種特定情況下,我創建自定義文本框控件只需要標記,並且本身分爲3段,存儲3個值成單獨的性質,如下圖所示。在這個特例中,哪個最好?

Screenshot 2 http://tinyurl.com/y9x7zox

更新(其它問題):爲什麼我不能用模板與用戶控件綁定,但我可以用控制?這是我認爲製作UserControl可能不是正確的決定的原因之一。

回答

3

Dov,我想你已經用你的更新回答了你自己的問題。當您想要製作支持模板的控件時,自定義控件非常有用。否則,當你從其他控件繼承來乾淨地添加功能(TextBox - > PasswordTextBox)時,它們很有用。

+0

是的,自定義控件對我來說絕對是最有意義的。謝謝。 – Dov 2009-12-17 21:44:42

4

如果你認爲你的控制是一組三個文本框,然後一個UserControl將是適當的,但如果你的控制仍將基本一個TextBox那麼你應該延伸,以與現有的控制「做成的控制。」

這聽起來像你需要一個UserControl給我。

8

用戶控件意味着一個複合控件 - 基本上是一堆其他「控件」組合在一起,作爲一個單一的內聚單元工作。

另一方面,自定義控件旨在用作單個控件。想想框架中的基本控件,比如TextBox或者Button - 如果你正在實現類似的東西,你需要一個Control。 (這比用戶控件更不常見,尤其是在WPF中,因爲您可以在基類控件上使用模板來完成其他框架中需要自定義控件的很多事情)。自定義控件就是爲單個「控件」定義新行爲。

+0

有什麼辦法可以用UserControl來使用模板綁定? – Dov 2009-12-17 18:32:09

+1

那麼,複合控件中單個元素的模板(例如:一個TextBox將選取一個分配給TextBox的模板)將應用於usercontrol(假設它不提供它自己的),但是你沒有得到相同的級別主題支持與您使用自定義控件一樣。 – 2009-12-17 18:33:35