我正在为WPF tabcontrol创建一个新的控件模板。
我的情况是控件中会有很多标签,用户可以添加和删除这些标签。
理想情况下,我想在Firefox / IE选项卡的行中创建一些内容,在选项卡标题内有一个删除按钮,用于删除当前选项卡。
另外,稍微复杂一点,我想要一个新的标签按钮,它始终位于tabcontrol中最后一个标签的右侧。
有人能指出我的方向开始吗?我已经看到人们使用Blend来创建新模板的示例。到目前为止,我还没有使用它,但刚刚下载了试用版......
感谢。
答案 0 :(得分:4)
在this article(简称MVVM)中,作者使用控件模板来设置选项卡的样式,并使用关闭按钮等。
或者你可以使用this sample
更加基础alt text http://i.msdn.microsoft.com/dd419663.fig02_L(en-us).gif
答案 1 :(得分:1)
“新标签”按钮更复杂。主要问题是您希望它显示在ItemsPresenter / TabPanel中的正确位置,但它不是驱动ItemsPresenter的集合的一部分,因为它实际上不是TabItem。我过去通过修改TabControl本身的ControlTemplate来将这个按钮粘贴到ItemsPresenter的右侧,但是在按钮不是因为按钮突然变成第二行的情况下你可能会看到奇怪的外观。这是TabPanel布局的一部分。
答案 2 :(得分:1)
尝试以下文章;他们都帮助我开始编写自定义选项卡控件。
1. Code Project: An Extended Tab Control
第一个链接提供了一个非常好的完全自定义解决方案,但我发现它有点令人生畏。第二个链接提供了一个由4部分组成的文章,它可以帮助您重新模板化控件。
答案 3 :(得分:0)
如何使用TemplateSelector?
创建两个不同的模板 - 一个用于普通标签项,另一个用于“新标签按钮”。两者实际上都是标签项,但具有不同的模板,具体取决于TemplateSelector中的条件。
要实现不同的行为/识别“新标签按钮”,只需在代码中签入指定的模板。
希望有所帮助。