我有一个非常大的ControlTemplate(200+行),里面有许多嵌套控件。我需要重用此模板,并对其中一个嵌套控件进行小修改(复选框的可见性)。显然,我不想将其复制粘贴到新的ControlTemplate中并进行更改,因为这会使代码库翻倍,如果我对模板进行了公共更改,则需要同时更改两个模板。
我考虑了三个解决方案,似乎它们都可以工作,但是我不了解足够的XAML(尤其是重构XAML)来知道这些是否可行
将常见的XAML提取到基础ControlTemplate中,并在两个新的ControlTemplates中“覆盖”复选框的可见性(我使用C#讲话-我不知道在XAML中是否有意义!)
从ControlTemplate定义外部访问复选框(通过x:Name或x:Key),那么设置Visibility将是微不足道的。
在ControlTemplate中指定一种绑定方式,例如:
<Checkbox Visibility={Binding someNewPropertyOfTheTemplate}/>
(这是TemplateBinding的用途吗?)
这些想法中有哪些是有效的?如果是这样,哪一个最合适? (如果不是-正确的方法是什么?)
我正在使用带有.Net 4.0的VS2010。