WPF工具包AutoCompleteBox下拉列表不会出现

时间:2011-02-21 08:17:54

标签: wpftoolkit autocompletebox

在我的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}">

这些都没有奏效。有什么想法吗?

编辑:没关系第二部分;我将错误的对象设置为控件的DataContext。

感谢。

2 个答案:

答案 0 :(得分:3)

如果你在ItemSource中看到的东西,它应该没问题......

尝试将MinimumPrefixLength设置为0,以便即使没有进行过滤也会显示弹出窗口,以便您查看列表包含的内容。另外,请确保设置过滤器,以便了解您正在使用的过滤器。

答案 1 :(得分:3)

我对WPF很新,并且遇到了同样的问题。

我也在关注微软添加此控件的模板。

大约一个小时的搜索后,一个silverlight论坛(http://forums.silverlight.net/t/178152.aspx/1)提出了建议:

  

尝试将FilterMode =“None”添加到XAML

为我工作,也许他们改变了默认值,因为原来的例子是写的,或者可能有人更了解WPF和这个特定的控件可以进一步澄清(我很高兴不再拔掉我的头发)。