WPF组合框添加项目

时间:2011-05-05 11:29:36

标签: wpf xaml combobox

在Access 2010(以及其他?)中,如果将“列表项编辑表单”分配给组合框,则在打开组合框时会出现半透明编辑图标,您可以单击该组合框并打开表单添加/编辑组合框的数据源中的项目。有谁知道这是否可以在WPF / Xaml中复制,如果是这样如何?它看起来非常光滑,远比组合框旁边的按钮好,这就是我现在的工作方式(我已经找到了很多关于如何在组合框列表顶部添加项目的示例,但这不是我在追求什么

非常感谢 Kev T

1 个答案:

答案 0 :(得分:0)

我不认为这是一个完整的答案,但我有一些想法。我已经尝试过这一切,但有些事情可能不太正确或可能做得更好。

创建一个继承自ComboBox的新类;我们称之为EditableComboBox。给它一个类型为Button的TemplatePart,其名称为PART_EditButton。还要为object类型的EditableComboBox添加依赖项属性;我们称之为EditorContent。 (这将是弹出对话框的内容。)

覆盖OnApplyTemplate以获取对按钮的引用(使用GetTemplateChild)并将事件处理程序附加到按钮的Click事件。触发Click事件时,创建并显示子窗口,并将其Content属性设置为EditorContent。将其DataContext属性设置为EditableComboBox的DataContext。

使用Blend为Button创建默认ControlTemplate的副本;我们称之为MyButtonControlTemplate。将按钮的不透明度更改为小于1的值,并将Storyboard添加到将不透明度设置为1的MouseOver VisualState。

使用Blend为ComboBox创建默认ControlTemplate的副本;我们称之为EditableComboBoxTemplate。查看弹出节点?向其子Grid添加另一个透明行,并在名为PART_EditButton的该行中添加一个按钮。将按钮的模板设置为MyButtonControlTemplate。然后为EditableComboBox创建一个默认样式,将模板设置为EditableComboBoxTemplate。

使用EditableComboBox时,将其EditorContent属性设置为可以编辑项目的属性,也许是包含与EditableComboBox绑定到相同ItemsSource的ListBox的Grid。

我希望这至少有点帮助。我想提供示例代码,但遗憾的是我现在没有足够的时间。这是一个有趣的问题,所以我会稍后再回来查看是否有其他人给了你更好的想法和/或回答你可能有的其他问题。