无法从WPF扩展工具包设置AutoCompleteTextBox的“项目源”

时间:2016-10-24 14:55:39

标签: c# wpf xaml

我知道在WPF的基本版本中,您可以在下拉列表中为选项设置一个带有ItemSource的组合框:

ComboBox box = new ComboBox();
box.ItemSource = List<string> exampleList;

我正在使用WPF Extended Toolkit尝试与AutoCompleteTextBox相同的功能,但是没有“Item Source”属性。我过去几天一直在网上查看示例,但还没有找到生成建议列表的示例。我已正确设置我的XAML以包含ToolKit命名空间,并且实际的文本框显示正常:

<Window x:Class="complianceAuthApp.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:complianceAuthApp"
    xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"        
    mc:Ignorable="d"
    Title="Authorization Submission App" Height="290" Width="747" Closing="Window_Closing" ResizeMode="CanMinimize">
    <grid>
        ...
           <xctk:AutoSelectTextBox 
              Name="lastNameAutoTextBox"
              AutoWordSelection="True" 
              BorderBrush="DarkGray" 
              AutoSelectBehavior="OnFocus"
              Margin="21,35,586,193"/>
    </Grid>
</Window>

但是,只要文本框中的字符数达到3或更多,我就想运行SQL查询:

public void getAutoTextBoxItemSource()
{

    if (lastNameAutoTextBox.Text.Length < 3)
                return;

    List<string> results = new List<string>();
    SqlConnection cnn = new SqlConnection(ConfigurationManager["SQLQuery"].ConnectionString);
    string sqlCommand = "SELECT TOP 10 ... ";

    cnn.Open();
    SQL.DataSet ds = new SQL.DataSet();
    SQL.DataTable dtable = new SQL.DataTable();
    SqlDataAdapter dscmd = new SqlDataAdapter(sqlCommand, cnn);


    int t = await Task.Run(() => dscmd.Fill(dtable));
    foreach (SQL.DataRow row in dtable.Rows)
    {
        results.Add(new string);
    }            

    //If there WERE to be an ItemSource Property...
    lastNameAutoTextBox.ItemSource=results;

    } 
 }

我似乎无法找到一个符合我需求的例子,并且花了几天时间试图找出如何以这种方式实现我的项目。

1 个答案:

答案 0 :(得分:4)

XAML中的控件为<xctk:AutoSelectTextBoxXceed.Wpf.Toolkit.AutoSelectTextBox is a textbox which selects its text automatically when the user tabs into it。它不是自动完成的文本框。

您需要different WPF Toolkit。转到下载页面,下载并安装WPFToolkit.msi。它在C:\Program Files (x86)\WPF Toolkit\v3.5.50211.1\中安装了大量的程序集。所以右键点击&#34;参考文献&#34;在您的WPF项目中,选择&#34;添加参考&#34;。在对话框中,单击&#34;浏览...&#34;,然后浏览到C:\Program Files (x86)\WPF Toolkit\v3.5.50211.1\。选择这两个程序集:

System.Windows.Controls.Input.Toolkit.dll
WPFToolkit.dll

然后添加它们。

然后将此命名空间添加到您的XAML:

xmlns:toolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input.Toolkit"

您应该可以使用toolkit:AutoCompleteBox

<toolkit:AutoCompleteBox
    ItemsSource="{Binding Items}"
    />

关于此,还有其他答案,但据我所知,他们不完整和/或已过时。我无法找到一个说MSI放置组件的地方。有人说你会找到一个数据可视化&#34; VS中“工具箱”面板中的部分。在某些情况下可能就是这种情况,但在VS 2015中,我刚安装的版本并非如此。 YMMV,也许吧。