我是Silverlight的新手,但在网络开发方面经验丰富,而且我发现自己对Silverlight的默认组合框非常恼火。它似乎缺乏用于常规数据输入的任何概念。主要是我希望它能像HTML选择框一样运行,你可以点击下拉菜单,然后键入一个字母,它会将你带到第一个带有该字母的项目。是否有一种简单的方法可以让它像这样功能,或者第三方控件可以做到这一点?
谢谢!
答案 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));
}
}
这是我的头脑,所以它可能不完全正确,肯定缺乏很多安全检查,但它应该给你一个想法。