我知道在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;
}
}
我似乎无法找到一个符合我需求的例子,并且花了几天时间试图找出如何以这种方式实现我的项目。
答案 0 :(得分:4)
XAML中的控件为<xctk:AutoSelectTextBox
。 Xceed.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,也许吧。