简单的方法使Silverlight组合框像HTML选择框一样执行?

时间:2010-07-27 19:02:35

标签: silverlight combobox

我是Silverlight的新手,但在网络开发方面经验丰富,而且我发现自己对Silverlight的默认组合框非常恼火。它似乎缺乏用于常规数据输入的任何概念。主要是我希望它能像HTML选择框一样运行,你可以点击下拉菜单,然后键入一个字母,它会将你带到第一个带有该字母的项目。是否有一种简单的方法可以让它像这样功能,或者第三方控件可以做到这一点?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以编写附加行为来提供此功能。问题是Silverlight中ComboBox中的项目并不总是字符串。它们可能是用户模板化为ItemTemplate的整个控件。如果您知道自己将string,则可以实施Behavior<ComboBox>以附加到KeyDown事件并选择正确的事件。

public class HTMLSelectBehavior : Behavior<ComboBox>
{
    protected override void OnAttached()
    {
        AssociatedObject.KeyDown += OnKeyDown;
    }

    private void OnKeyDown(object sender, KeyEventArgs e)
    {
        SelectedItem = AssociatedObject.ItemsSource
                           .FirstOrDefault(i => i.ToString().BeginsWith((char)e.Key));
    }
}

这是我的头脑,所以它可能不完全正确,肯定缺乏很多安全检查,但它应该给你一个想法。