C# WPF自动完成框-如何限制它仅从建议列表中选择?
我想限制WPF AutoCompleteBox(WPF toolkit控件)仅从建议列表中选择一项。它不应该允许用户键入他们想要的任何内容C# WPF自动完成框-如何限制它仅从建议列表中选择?,c#,xaml,wpftoolkit,autocompletebox,C#,Xaml,Wpftoolkit,Autocompletebox,我想限制WPF AutoCompleteBox(WPF toolkit控件)仅从建议列表中选择一项。它不应该允许用户键入他们想要的任何内容 有人能建议我如何实施这个吗?欢迎使用任何示例代码。您可以通过私钥关闭事件限制用户。我希望它能起作用……以下是我是如何做到的。创建派生类并重写OnPreviewTestInput。将集合设置为控件的ItemsSource属性,它应该可以正常工作 public class CurrencySelectorTextBox : AutoCompleteBox {
有人能建议我如何实施这个吗?欢迎使用任何示例代码。您可以通过私钥关闭事件限制用户。我希望它能起作用……以下是我是如何做到的。创建派生类并重写OnPreviewTestInput。将集合设置为控件的ItemsSource属性,它应该可以正常工作
public class CurrencySelectorTextBox : AutoCompleteBox
{
protected override void OnPreviewTextInput(TextCompositionEventArgs e)
{
var currencies = this.ItemsSource as IEnumerable<string>;
if (currencies == null)
{
return;
}
if (!currencies.Any(x => x.StartsWith(this.Text + e.Text, true, CultureInfo.CurrentCulture))
{
e.Handled = true;
}
else
{
base.OnPreviewTextInput(e);
}
}
}
公共类CurrencySelectorTextBox:AutoCompleteBox
{
PreviewTestInput上的受保护覆盖无效(TextCompositionEventArgs e)
{
var Currences=此.ItemsSource为IEnumerable;
如果(货币==null)
{
返回;
}
如果(!currences.Any)(x=>x.StartsWith(this.Text+e.Text,true,CultureInfo.currentcurity))
{
e、 已处理=正确;
}
其他的
{
基于输出(e);
}
}
}
如果要将其数据绑定到属性,例如
<sdk:AutoCompleteBox ItemsSource="{Binding Sites, Source={StaticResource VmSchedulel}}" ValueMemberPath="SiteName"
SelectedItem="{Binding Site, Mode=TwoWay}" FilterMode="ContainsOrdinal">
<sdk:AutoCompleteBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding SiteName}"/>
</DataTemplate>
</sdk:AutoCompleteBox.ItemTemplate>
</sdk:AutoCompleteBox>
set
{
if (value != null)
{
BaseRecord.SiteID = value.ID;
PropChanged("Site");
}
}