我有一個非常大的ControlTemplate(200多行),裏面有很多嵌套控件。我需要重新使用這個模板,對這些嵌套控件(複選框的可見性)進行一些小改動。很明顯,我不想複製粘貼到一個新的ControlTemplate中,只需進行更改,因爲我將雙倍的代碼庫,如果我對模板進行了常見更改,則需要更改兩者。覆蓋ControlTemplate中的屬性
我已經想到了三種解決方案看起來他們可以工作,但我不知道有足夠的瞭解XAML(尤其是重構XAML知道這些是可能的)
提取共同XAML到一個ControlTemplate的基礎中,並在兩個新的ControlTemplates中覆蓋複選框的可見性(由於我使用的是C#語言,我把重寫放在引號中 - 我不知道這在XAML中是否有意義!)
獲得訪問權限從ControlTemplate定義之外的複選框(通過x:Name或x:Key也許),然後設置Visibility將是微不足道的。
指定某種在ControlTemplate中的公開程度結合,是這樣的:(?這是什麼原因TemplateBinding用於)
<Checkbox Visibility={Binding someNewPropertyOfTheTemplate}/>
是否有任何的這些想法是否有效?如果是這樣,哪個最合適? (如果沒有 - 什麼是正確的方法?)
我使用VS2010與.Net 4.0。