让Silverlight组合框像HTML选择框一样运行的简单方法?
我是Silverlight的新手,但在web开发方面经验丰富,我发现自己对Silverlight的默认组合框非常恼火。它似乎缺少任何用于常规数据输入的概念。首先,我希望它能像一个HTML选择框一样工作,在这里你可以点击下拉菜单,然后键入一个字母,它会带你进入带有该字母的第一项。有没有一种简单的方法让它像这样运行,或者有第三方控件可以做到这一点让Silverlight组合框像HTML选择框一样运行的简单方法?,silverlight,combobox,Silverlight,Combobox,我是Silverlight的新手,但在web开发方面经验丰富,我发现自己对Silverlight的默认组合框非常恼火。它似乎缺少任何用于常规数据输入的概念。首先,我希望它能像一个HTML选择框一样工作,在这里你可以点击下拉菜单,然后键入一个字母,它会带你进入带有该字母的第一项。有没有一种简单的方法让它像这样运行,或者有第三方控件可以做到这一点 谢谢 您可以编写附加的行为来提供此功能。问题在于Silverlight中组合框中的项目并不总是字符串。它们可能是用户已模板化为ItemTemplate的完
谢谢 您可以编写附加的行为来提供此功能。问题在于Silverlight中组合框中的项目并不总是字符串。它们可能是用户已模板化为
ItemTemplate
的完整控件。如果您知道您的将是字符串
,则可以实现行为
以附加到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));
}
}
public类HTMLSelectBehavior:Behavior
{
受保护的覆盖无效附加()
{
AssociatedObject.KeyDown+=OnKeyDown;
}
私有void OnKeyDown(对象发送方,KeyEventArgs e)
{
SelectedItem=AssociatedObject.ItemsSource
.FirstOrDefault(i=>i.ToString().BeginsWith((char)e.Key));
}
}
这是我的想法,所以它可能不完全正确,而且肯定缺乏许多安全检查,但它应该给你一个想法