将按钮添加到wpf中的组合框中
问题描述:
几乎我有一个可编辑组合框,并且我想在清除所选项目的下拉按钮的右侧添加一个按钮。所以...将按钮添加到wpf中的组合框中
| TextBox | X | v |
我想是这样......
<Style...>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<ControlTemplate.Resources>
<Style TargetType="{x:Type TextBox}">...Add button here...</Style>
</ControlTemplate.Resources>
<ContentPresenter />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
答
我不认为你的建议的方法会奏效。只要您在样式中设置了Template
属性,您也必须重新定义其视觉表示。但是,您可以在ComboBox
的Resources
部分(不在其模板中)为TextBox
(如您所建议的)定义调整后的ControlTemplate
。
<ComboBox ...>
<ComboBox.Resources>
<Style TargetType="{x:Type TextBox}">
<Setter Property="Template">
<ControlTemplate TargetType="{x:Type TextBox}">
<!-- define template for TextBox with an additional "clear" button -->
</ControlTemplate>
</Setter>
</Style>
</ComboBox.Resources>
</ComboBox>
但你仍然有问题如何处理点击这个按钮 ...
一个干净的解决方案将ComboBox
子类,并提供了一个ICommand
从而清除当前选择。然后,您将覆盖ComboBox
的ControlTemplate
,在下拉按钮旁边添加一个“清除”按钮,并将该按钮绑定到新的ICommand
。这绝对是一些工作,但最终你有一个干净的解决方案,你可以在以后轻松扩展。
很好的答案。对于这种体验的重新模板化是非常标准的和实现它的方式......并通过带有代码隐藏事件绑定,命令或新子类的模板中的额外视觉效果,它们都可以帮助您。 – 2010-05-11 08:29:04