在我的WPF应用程序中,我有一个UserControl,里面有两个AutoCompleteBox控件。此UserControl可以在页面上多次出现。问题是,在AutoCompleteBox中键入时,不会显示选项下拉列表。我正在处理Populating事件,如果我在那里放置一个断点并逐步执行,我可以清楚地看到ItemsSource包含其中的项目,所以看起来它正在工作,除了我实际上没有看到下拉列表菜单。我在http://msdn.microsoft.com/en-us/library/dd795156%28v=VS.95%29.aspx处跟踪了代码示例。我在这里错过了什么?
XAML:
<my:AutoCompleteBox Name="acboxCoauthorName" Width="175" Unloaded="Control_Unloaded" MinimumPopulateDelay="100" Populating="acboxCoauthorName_Populating">
<my:AutoCompleteBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=LastOrCompanyName}"/>
</DataTemplate>
</my:AutoCompleteBox.ItemTemplate>
</my:AutoCompleteBox>
C#:
private void acboxCoauthorName_Populating(object sender, PopulatingEventArgs e)
{
e.Cancel = true;
var query = from a in _context.Authors
where a.Display_Name.StartsWith(acboxCoauthorName.Text)
select a;
acboxCoauthorName.ItemsSource = ((ObjectQuery) query).Execute(MergeOption.OverwriteChanges);
acboxCoauthorName.PopulateComplete();
}
当我们在它时,我似乎无法对数据文本中的对象进行数据绑定。我尝试了上面的数据绑定方法,或者我选择了更简单的方法:
<击> <my:AutoCompleteBox Name="acboxCoauthorName" Width="175" MinimumPopulateDelay="100" Populating="acboxCoauthorName_Populating" Text="{Binding Path=LastOrCompanyName}">
击>
这些都没有奏效。有什么想法吗?
感谢。
答案 0 :(得分:3)
如果你在ItemSource中看到的东西,它应该没问题......
尝试将MinimumPrefixLength设置为0,以便即使没有进行过滤也会显示弹出窗口,以便您查看列表包含的内容。另外,请确保设置过滤器,以便了解您正在使用的过滤器。
答案 1 :(得分:3)
我对WPF很新,并且遇到了同样的问题。
我也在关注微软添加此控件的模板。
大约一个小时的搜索后,一个silverlight论坛(http://forums.silverlight.net/t/178152.aspx/1)提出了建议:
尝试将FilterMode =“None”添加到XAML
为我工作,也许他们改变了默认值,因为原来的例子是写的,或者可能有人更了解WPF和这个特定的控件可以进一步澄清(我很高兴不再拔掉我的头发)。