我正在尝试创建一个 WPF ComboBox 控件,该控件在选择某些内容时包含一个清除按钮。该控件应具有两种状态:如果选择了某些内容,则该控件看起来像一个带有清除按钮的标签。如果没有选择,则显示一个普通的 ComboBox。这两种状态如下图所示。
研究我的问题时,我遇到了以下与我的非常相似的 SO 问题:
两者都建议将 ComboBox 子类化,以提供带有额外按钮的修改模板。但这是我有点困惑的地方。John Bowen 对第二个链接问题的回答表明我应该复制 ComboBox 的默认模板;修改它以包含一个从 Blend 获取模板的按钮。不精通混合我在这里找到了 MSDN 上的模板:
http://msdn.microsoft.com/en-us/library/ms752094(v=vs.85).aspx
我的问题是我不太确定我应该改变什么。查看默认模板,我认为我需要按照以下方式做一些事情:
- 创建一个新的“IsSelected”属性,我可以将触发器挂钩。
- 为 Clear Button 添加一个控件模板,触发器附加到 IsSelected 隐藏按钮。
- 将 IsSelected 触发器附加到 ComboBoxToggleButton 控件模板以在选择时将其隐藏。
- 当 IsSelected 为真时,以某种方式重新
PART_EditableTextBox
调整组合框模板中文本框的大小。
如果我在错误的树上吠叫,这看起来是否正确,以及关于我如何做的任何指示或其他建议。