相关疑难解决方法(0)

WPF:AutoComplete TextBox,...再次

另一个SO问题询问WPF中的自动完成文本框.有几个人建了这些,其中一个答案就是这个代码项目的文章.

但我没有找到任何WPF自动完成文本框与WinForms自动完成文本框进行比较.codeproject示例有效,有点......

alt text http://i50.tinypic.com/sx2ej5.jpg

...但

  • 它不是一个可重用的控件或DLL.这是我需要嵌入每个应用程序的代码.
  • 它仅适用于目录.它没有用于设置自动完成源是仅文件系统目录,还是文件系统文件或....等的属性.当然,我可以编写代码来执行此操作,但是...我宁愿使用已编写的其他人的代码.
  • 它没有设置弹出窗口大小等属性.
  • 有一个弹出列表框,显示可能的完成.浏览该列表时,文本框不会更改.在焦点列表框中键入字符不会导致文本框更新.
  • 远离列表框导航焦点不会使弹出列表框消失.这令人困惑.

所以,我的问题:

*没有任何人有一个免费的WPF自动完成文本框的作品,并提供优质的UI体验?*


回答

我是这样做的:

0.0.获得WPF工具包

0.1.运行WPF Toolkit的MSI

0.2.在Visual Studio中,从工具箱(特别是数据可视化组)拖放到UI设计器中.在VS工具箱中看起来像这样:

替代文字http://i49.tinypic.com/s12q6x.jpg

如果您不想使用设计师,请手工制作xaml.它看起来像这样:


<toolkit:AutoCompleteBox
   ToolTip="Enter the path of an assembly."
   x:Name="tbAssembly" Height="27" Width="102"
   Populating="tbAssembly_Populating" />
Run Code Online (Sandbox Code Playgroud)

...工具箱命名空间以这种方式映射的位置:

xmlns:toolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input.Toolkit"
Run Code Online (Sandbox Code Playgroud)

0.3.提供Populating事件的代码.这是我用过的东西:


private void tbAssembly_Populating(object sender, System.Windows.Controls.PopulatingEventArgs e)
{
    string text = tbAssembly.Text;
    string dirname = Path.GetDirectoryName(text);

    if (Directory.Exists(Path.GetDirectoryName(dirname)))
    {
        string[] files = Directory.GetFiles(dirname, "*.*", SearchOption.TopDirectoryOnly);
        string[] dirs = Directory.GetDirectories(dirname, "*.*", SearchOption.TopDirectoryOnly);
        var candidates = new List<string>(); …
Run Code Online (Sandbox Code Playgroud)

wpf textbox autocomplete

45
推荐指数
2
解决办法
5万
查看次数

标签 统计

autocomplete ×1

textbox ×1

wpf ×1