【问题标题】:WPF combobox add itemWPF 组合框添加项
【发布时间】:2011-08-19 07:28:03
【问题描述】:

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

非常感谢
凯夫T

【问题讨论】:

    标签: wpf xaml combobox


    【解决方案1】:

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

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

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

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

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

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

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

    【讨论】:

    • 安德鲁,谢谢你的回复,你显然已经考虑了很多,我很感激。我将在下周完成你的想法并报告(这个周末不能做任何事情)。非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-05
    • 2013-03-24
    • 2011-07-19
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 2016-01-19
    相关资源
    最近更新 更多