Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
让Silverlight组合框像HTML选择框一样运行的简单方法?_Silverlight_Combobox - Fatal编程技术网

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

让Silverlight组合框像HTML选择框一样运行的简单方法?,silverlight,combobox,Silverlight,Combobox,我是Silverlight的新手,但在web开发方面经验丰富,我发现自己对Silverlight的默认组合框非常恼火。它似乎缺少任何用于常规数据输入的概念。首先,我希望它能像一个HTML选择框一样工作,在这里你可以点击下拉菜单,然后键入一个字母,它会带你进入带有该字母的第一项。有没有一种简单的方法让它像这样运行,或者有第三方控件可以做到这一点 谢谢 您可以编写附加的行为来提供此功能。问题在于Silverlight中组合框中的项目并不总是字符串。它们可能是用户已模板化为ItemTemplate的完

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


谢谢

您可以编写附加的行为来提供此功能。问题在于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));
}
}
这是我的想法,所以它可能不完全正确,而且肯定缺乏许多安全检查,但它应该给你一个想法