3

在我的 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();
}

当我们这样做时,我似乎也无法对 datacontext 中的对象进行数据绑定。我尝试了上面的数据绑定方法,或者我选择了更简单的方法:

<my:AutoCompleteBox Name="acboxCoauthorName" Width="175" MinimumPopulateDelay="100" Populating="acboxCoauthorName_Populating" Text="{Binding Path=LastOrCompanyName}">

这些都不起作用。有任何想法吗?

编辑:不要介意第二部分;我将错误的对象设置为控件的 DataContext。

谢谢。

4

2 回答 2

3

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

尝试将 MinimumPrefixLength 设置为 0,以便即使未进行过滤也会显示弹出窗口,以便您查看列表包含的内容。还要确保你设置了过滤器,这样你就知道你正在使用什么过滤器。

于 2011-08-03T17:28:50.107 回答
3

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

我也在按照微软的模板添加这个控件。

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

尝试将 FilterMode="None" 添加到 XAML

为我工作,也许他们在编写原始示例后更改了默认值,或者也许对 WPF 和这个特定控件有更多了解的人可以进一步澄清(我很高兴停止拉扯我的头发)。

于 2012-07-19T04:29:35.810 回答