【问题标题】:How do I continue showing a decorated empty result list with AutoCompleteBox?如何继续使用 AutoCompleteBox 显示修饰的空结果列表?
【发布时间】:2010-02-25 22:48:39
【问题描述】:

我有一个 AutoCompleteBox,它需要使用其他一些控件来包装过滤后的项目,例如指向不同搜索表单的链接。即使过滤列表为空,我也需要显示 AutoCompleteBox 的下拉列表。

目前,当项目列表被过滤为空时,AutoCompleteBox 会强制关闭弹出窗口。

我如何在一个空的项目列表中保持 dang 弹出窗口打开?

【问题讨论】:

    标签: silverlight autocomplete


    【解决方案1】:

    不久前,我在将继承的 AutoCompleteBox 从 SL2 迁移到 SL3 时遇到了这个问题,因此请注意,这些代码示例来自直接继承自 AutoCompleteBox 的自定义控件。

    首先,我声明了一个类级变量来保存 AutoCompleteBox 的 Popup 部分:

    private Popup dropdownPopup = null;
    

    然后,覆盖 OnApplyTemplate 方法,您可以从默认的 AutoCompleteBox 模板中获取 Popup:

    this.dropdownPopup = this.GetTemplateChild("Popup") as Popup;
    

    现在,您可以处理 AutoCompleteBox 的 KeyDown 事件并随时显示您的弹出窗口。

            protected override void OnKeyDown(System.Windows.Input.KeyEventArgs e)
            {
                base.OnKeyDown(e);
                this.dropdownPopup.IsOpen = true;
            }
    

    最后,如果 AutoCompleteBox 的 Text 属性为空,您可能会遇到问题,我发现 Popup 在这种情况下仍然不想打开。如果我仍然希望它打开,我只需将 Text 设置为一个空格,就克服了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-06
      • 1970-01-01
      • 2019-11-29
      • 2016-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多