【问题标题】:C# WPF Autocomplete while Editing Cell in DataGridView在 DataGridView 中编辑单元格时 C# WPF 自动完成
【发布时间】:2021-10-01 02:00:32
【问题描述】:

我在将自动完成功能集成到我的 DataGridView 时遇到问题。当我自定义一个单元格时,我想打开一个建议列表。类似于谷歌搜索栏。我尝试了一些我在互联网上找到的东西,但没有成功。我从https://github.com/Nimgoble/WPFTextBoxAutoComplete 下载了一个带有 AutoCompleteFunction 的包,该包已存在于 WinForms 但不存在于 WPF 中。这是我的代码:

<DataGridTextColumn Width="200" Header=" Column1 " Binding="{Binding Column1}">
    <DataGridTextColumn.EditingElementStyle>
        <Style TargetType="TextBox">
            <Setter Property="MaxLength" Value="50"></Setter>
            <Setter Property="behaviors:AutoCompleteBehavior.AutoCompleteItemsSource" Value="{Binding ???, RelativeSource={RelativeSource AncestorType=DataGrid}}" />
            <EventSetter Event="TextChanged" Handler="TextBox_TextChanged">
        </Style>
    </DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>

我想在我的项目中添加一个新类,其中包含我需要的所有建议的列表(字符串)。也许有人有想法?我试图复制Using WPF TextBox Autocomplete in a DataGrid,但失败了。

【问题讨论】:

  • 您好 Mansur Kurtov,我尝试使用您的示例,但我不知道如何将字符串列表绑定到 AutoCompleteTextBox。你能帮助我吗?我将在这里发布我的实际代码。我是编码和 WPF 的新手,我真的很难理解 WPF 中的那些绑定。

标签: c# wpf datagridview autocomplete cell


【解决方案1】:

这是我的实际代码:

<DataGridTemplateColumn  Width="200" Header=" Command ">
                    <DataGridTemplateColumn.CellTemplate >
                        <DataTemplate>
                            <wpf:AutoCompleteTextBox 
                                MaxLength="50" Text="{Binding Command, Mode=TwoWay}" 
                                Provider="{Binding suggestions}"
                                />
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>

绑定命令运行正常。

public interface ISuggestionProvider
        {
            IEnumerable GetSuggestions(string filter);
        }

我刚刚从示例https://www.codeproject.com/Tips/801004/WPF-AutoComplete-TextBox复制了它


public DatabaseWindow()                                                 
       
 {
            InitializeComponent();

            var provider = new SuggestionProvider(x =>
            {
                IEnumerable suggestions;
                suggestions = "TEST1";
                return suggestions;
            });

 }

【讨论】:

    【解决方案2】:

    对于将字符串集合绑定到 AutoCompleteTextBox(在您的情况下),您可以使用:

    <wpf:AutoCompleteTextBox x:Name="MyTextBox"
                              Text="{Binding Command, Mode=TwoWay}"/>
    

    ...

              var provider = new SuggestionProvider(x =>
                {
                    var suggestions =new List<string>() { "TEST1","TEST2","TEST3" };
                    return suggestions;
                });
               MyTextBox.Provider = provider;
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-10
    • 1970-01-01
    • 1970-01-01
    • 2019-11-29
    • 2011-12-24
    • 2011-10-25
    • 2018-06-04
    • 1970-01-01
    相关资源
    最近更新 更多