我知道在 WPF 的基本版本中,您可以在下拉列表中为选项设置一个带有 ItemSource 的组合框:
ComboBox box = new ComboBox();
box.ItemSource = List<string> exampleList;
Run Code Online (Sandbox Code Playgroud)
我正在使用 WPF 扩展工具包来尝试使用 AutoCompleteTextBox 的相同功能,但是没有“项目源”属性。过去几天我一直在网上查看示例,但还没有找到生成建议列表的示例。我已经正确设置了我的 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>
Run Code Online (Sandbox Code Playgroud)
但是,每当文本框中的字符数达到 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;
}
}
Run Code Online (Sandbox Code Playgroud)
我似乎找不到适合我需要的示例,并且过去几天一直在试图弄清楚如何以这种方式实施我的项目。
XAML 中的控件是<xctk:AutoSelectTextBox. Xceed.Wpf.Toolkit.AutoSelectTextBox是一个文本框,它会在用户使用 Tab 键时自动选择其文本。它不是一个自动完成的文本框。
您需要一个不同的 WPF 工具包。转到下载页面,下载并安装 WPFToolkit.msi。它在C:\Program Files (x86)\WPF Toolkit\v3.5.50211.1\. 因此,右键单击 WPF 项目中的“引用”,选择“添加引用”。在对话框中,单击“浏览...”,然后浏览到C:\Program Files (x86)\WPF Toolkit\v3.5.50211.1\。选择这两个程序集:
System.Windows.Controls.Input.Toolkit.dll
WPFToolkit.dll
Run Code Online (Sandbox Code Playgroud)
并添加它们。
然后将此命名空间添加到您的 XAML:
xmlns:toolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input.Toolkit"
Run Code Online (Sandbox Code Playgroud)
你应该能够使用 toolkit:AutoCompleteBox
<toolkit:AutoCompleteBox
ItemsSource="{Binding Items}"
/>
Run Code Online (Sandbox Code Playgroud)
关于这个还有其他答案,但据我所知,它们不完整和/或已过时。我找不到一个说 MSI 把程序集放在哪里的。有人说您会在 VS 的“工具箱”面板中找到“数据可视化”部分。在某些时候可能是这种情况,但在 VS 2015 中我刚刚安装的版本并非如此。YMMV,也许吧。