如何从Silverlight AutoCompleteBox中获取所选项?

时间:2010-01-12 15:25:30

标签: c# silverlight silverlight-3.0 autocomplete autocompletebox

我希望在这里遗漏一些非常明显的东西,但对于我的生活,我无法理解这一点。

我有一个AutoCompleteBox控件正在通过异步调用检索结果,尽管我找不到一种可靠的方法来知道用户何时从返回值列表中选择了一个选项。我已经尝试挂钩SelectionChanged事件,但是当自动填充下拉列表中的每一个动作触发时,当我真正想知道的是当用户明确地说“嘿,那是我想要的项目时! “单击它,或使用返回键选择它。

任何建议都会非常感激,因为这开始让我有点疯狂。 =)

由于

P.S。 SelectionChanged事件参数提供AddedItemsRemovedItems,但不直接指示我正在寻找的选择类型。

2 个答案:

答案 0 :(得分:1)

没有特定的事件表明使用过的选项特别丰富了选项,而不仅仅是浏览。

对于您的情况,您可以获得最接近的DropDownClosed甚至LostFocus个事件,然后访问SelectedItem属性。

答案 1 :(得分:0)

如果您使用的是Telerik AutoCompleteBox,则可能是您正在寻找的“OnEntryAdded”事件。我看到这个问题是在4年前被问到的,所以也许这个事件当时还不存在。我刚刚更新到Telerik控件的最新更新(2014年第二季度)。这是一个简单的例子。我删除了我们在这里没有讨论的属性来清理它,但显然,除非你在代码中设置它们(例如DataSourceID),否则需要重新添加它们。

来源页面:

<telerik:RadAutoCompleteBox ID="RadAutoCompleteBox1" runat="server" OnEntryAdded="RadAutoCompleteBox1_EntryAdded" >
</telerik:RadAutoCompleteBox>

测试代码(在VB中):

   Protected Sub RadAutoCompleteBox1_EntryAdded(sender As Object, e As AutoCompleteEntryEventArgs)
        MsgBox(e.Entry.Text)   'This is just to show you the DataValueField in your dev 
        MsgBox(e.Entry.Value)  'This is just to show you the DataTextField in your dev
        racbCustomer.Entries.Clear()  'This will wipe out the selection(s)
   End Sub