首页 > 解决方案 > WPF 将 ObservableCollection 绑定到 AutoCompleteItemsSource

问题描述

我正在尝试将自动完成功能添加到我的 Datagrid 文本框列“名称”中,因此我在以下位置使用 NuGet:https ://github.com/Nimgoble/WPFTextBoxAutoComplete

我的 xml 代码是这样的:

<DataGridTextColumn x:Name="nameColumn" Width="100" Binding="{Binding Name}" Header="Name">
<DataGridTextColumn.EditingElementStyle>
    <Style TargetType="{x:Type TextBox}">
        <Setter Property="behaviors:AutoCompleteBehavior.AutoCompleteItemsSource"
                Value="{Binding ItemsList,  RelativeSource={RelativeSource AncestorType=DataGrid}}" />
        <EventSetter Event="TextChanged" Handler="TextBox_TextChanged"/>
    </Style>
</DataGridTextColumn.EditingElementStyle>

其中 ItemsList 在代码中初始化为:

ObservableCollection<String> ItemsList;

它将在以下处理程序下的每个 textchanged 事件上更新:

private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
    ItemsList = new ObservableCollection<string>();
    string tmp = (sender as TextBox).Text;
    if (tmp != "")
    {
        DataTable dt = sq.GetItemInvByName(tmp);
        if (dt != null)
        {
            foreach (DataRow dr in dt.Rows)
            {
                ItemsList.Add(dr["Name"].ToString());
            }
        }
    }
}

但是当我运行我的代码时,什么也没有发生,没有显示任何建议,有人能告诉我我想念什么吗?任何帮助将不胜感激

标签: bindingautocomplete

解决方案


推荐阅读