热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:覆盖ControlTemplate中的属性

篇首语:本文由编程笔记#小编为大家整理,主要介绍了覆盖ControlTemplate中的属性相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了覆盖ControlTemplate中的属性相关的知识,希望对你有一定的参考价值。



我有一个非常大的ControlTemplate(200多行),里面有许多嵌套控件。我需要重复使用这个模板,只需对这些嵌套控件之一进行小的更改(复选框的可见性)。显然,我不想复制粘贴到新的ControlTemplate中,只是进行了更改,因为我将加倍代码库,如果我对模板进行常见更改,我需要更改它们。

我已经想过三个似乎可以工作的解决方案,但我对XAML知之甚少(尤其是重构XAML以了解这些是否可行)



  1. 将公共XAML提取到基础ControlTemplate中并“覆盖”两个新ControlTemplates中的复选框可见性(我将覆盖放在引号中,因为我正在使用C#说话 - 我不知道这在XAML中是否有意义!)

  2. 从ControlTemplate定义的外部访问复选框(通过x:Name或x:Key可能),然后设置Visibility将是微不足道的。

  3. 在ControlTemplate中的Visibility上指定某种绑定,类似于:
    (这是使用TemplateBinding的吗?)

这些想法是否有效?如果是这样,哪个最合适? (如果不是 - 这是正确的方法吗?)

我正在使用带有.Net 4.0的VS2010。


答案

我会去#3。但是你的代码不太正确。如果要绑定到实际控件的属性,应用哪个模板,则应使用TemplateBinding。假设您有一个属性ShowCheckboxes的自定义控件。然后在你的模板中你应该使用

COnverter={StaticResource BooleanToVisibilityConverter}}/>

注意,您可能必须参考或创建适当的转换器。另一方面,如果使用MVVM,则可以在viewmodel类上定义控件属性。那你应该使用{Binding}

此外,还有另一种方法可以控制应用哪些模板。您可以从大模板中提取子控件的模板。并复制它,因此您有两个模板,这些模板在您需要的方式上有所不同。然后,在主模板中,您可以将TemplateSelector设置为您要实现的自定义类的子控件。查看http://msdn.microsoft.com/en-us/library/system.windows.controls.datatemplateselector.aspx了解更多示例。



推荐阅读
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • Monkey《大话移动——Android与iOS应用测试指南》的预购信息发布啦!
    Monkey《大话移动——Android与iOS应用测试指南》的预购信息已经发布,可以在京东和当当网进行预购。感谢几位大牛给出的书评,并呼吁大家的支持。明天京东的链接也将发布。 ... [详细]
  • 如何去除Win7快捷方式的箭头
    本文介绍了如何去除Win7快捷方式的箭头的方法,通过生成一个透明的ico图标并将其命名为Empty.ico,将图标复制到windows目录下,并导入注册表,即可去除箭头。这样做可以改善默认快捷方式的外观,提升桌面整洁度。 ... [详细]
  • IhaveconfiguredanactionforaremotenotificationwhenitarrivestomyiOsapp.Iwanttwodiff ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 本文介绍了关于汉庭酒店价格的知识点,提供了一篇由congdi7904投稿的技术文章,希望能帮到读者解决相关技术问题。同时还提供了汉庭酒店的官方链接和转载信息。请注意,引用汉庭酒店需遵循CC 4.0 BY-SA版权协议。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
author-avatar
靜钕孓626
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有