WPF AutoCompleteBox - 如何限制它只能从建议清单中选择?
-
27-09-2019 - |
题
我想限制WPF AutoCompleteBox(WPF工具包对照)只从建议列表中选择一个项目。它不应该允许用户键入任何他们想要的东西。
可以有人建议我如何实现这一点?任何示例代码理解。
解决方案
下面是我做到了。创建一个派生类并覆盖OnPreviewTextInput。您的收藏设为控制的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);
}
}
}
其他提示
可以通过限制预览键按下事件的用户。我希望它会工作...
如果你正在它数据绑定到一个属性,像这样的实例
<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>
如果输入一些文字不匹配在任何的ItemsSource的的SelectedItem将等于空。 在你的财产的一套方法,你可以不设置值,因为它的空,该物业将保持它原有的价值。
set
{
if (value != null)
{
BaseRecord.SiteID = value.ID;
PropChanged("Site");
}
}
不隶属于 StackOverflow