【求助】SILVERLIGHT或者WPF控件扩展开发问题

daview 2011-08-11 09:17:08
在WPF或者SILVERLIGHT中,我想定制系统已有的控件,比如TABCONTROL,本来,使用控件模板是最简单的,但总有一些不满足的地方,所以,计划派生已有控件,然后复制出系统原来定义的STYLE定义来修改,但,没有效果,该如何解决?
...全文
87 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
daview 2011-09-09
  • 打赏
  • 举报
回复
对SILVERLIGHT和WPF,有点失望,高手太少了,只能自己摸索,却没有时间也没有一起探讨的。
Howardch 2011-08-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 daview 的回复:]

感谢GODSPEEDCH!我的目的确实是这样。

比如,TABPANEL的TABITEM是会换行的,我想把这个换掉。
比如,我希望让TABITEM的标签有一个ICON图标和一个CLOSE按钮。
比如,当TABPANEL的TABITEM标签不换行的时候,超出UI范围则支持滚动。
[/Quote]

我觉得这样可以比较简单的解决:首先定义一个headertemplate,像这样。
<DataTemplate x:Key="HeaderPanel">
<StackPanel Orientation="Vertical">
<Image Width="32" Height="32" Source="{Binding HeaderBackground}" FocusVisualStyle="{x:Null}"></Image>
<Button Content="{Binding HeaderText}" Width="60" />
</StackPanel>
</DataTemplate>

再定义TabItem的HeaderTemplate,
<TabControl.Resources>
<Style TargetType="TabItem">
<Setter Property="HeaderTemplate" Value="{StaticResource HeaderPanel}" />
<Setter Property="Width" Value="90" />
<Setter Property="Height" Value="60" />
</Style>
</TabControl.Resources>


至于HeaderTemplate你就可以随意修改了。
daview 2011-08-16
  • 打赏
  • 举报
回复
感谢GODSPEEDCH!我的目的确实是这样。

比如,TABPANEL的TABITEM是会换行的,我想把这个换掉。
比如,我希望让TABITEM的标签有一个ICON图标和一个CLOSE按钮。
比如,当TABPANEL的TABITEM标签不换行的时候,超出UI范围则支持滚动。
Howardch 2011-08-15
  • 打赏
  • 举报
回复
我猜楼主的意思是想修改默认控件的UI和模板绑定方式之类,自定义他的controltemplate是最好的方法。虽然用代码都可以实现,但是作为自定义控件,推荐重写theme是比较好的方式,要不很难维护。
Architecture Net 2011-08-14
  • 打赏
  • 举报
回复
直接申明一个类继承于TABCONTROL,然后在这个类内部对TableControl的属性进行相关改变即可。
daview 2011-08-13
  • 打赏
  • 举报
回复
没有这方面的高手吗?
Howardch 2011-08-13
  • 打赏
  • 举报
回复
对于Silverlight来说,你可以用reflector去反射Silverlight的程序集,可以反射到themes/generic.xaml的文件,这里你可以得到tabcontrol等你需要的系统控件的ControlTemplate,有了这个模板,你可以修改并自定义他的controltemplate已达到你的要求。对于WPF的controltemplate资源甚少,但有些在google上也可以搜到。你可以试试把你需要的场景说出来,让大家帮你参考一下;说不定用已有的ItemTemplate或之类的模板就可以实现呢?

8,735

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧