【发布时间】:2016-02-04 09:11:03
【问题描述】:
我目前在我的项目中使用这个AutoCompleteTextBox:WPFTextBoxAutoComplete
我将 TextBox 绑定到 List<string> 的员工姓名。我就是这样做的;
<TextBox
Width="250" Height="50" HorizontalAlignment="Center"
Text="{Binding Name, UpdateSourceTrigger=PropertyChanged}"
behaviors:AutoCompleteBehavior.AutoCompleteItemsSource="{Binding Employees}"
/>
我希望TextBox 做的是在用户输入员工姓名时提供建议。但是,根本没有出现任何建议,这让我相信我没有正确绑定UpdateSourceTrigger。
如果我只是将行为绑定到List<string>,那么当没有员工姓名的属性时,Text="{Binding Name, UpdateSourceTrigger=PropertyChanged}" 如何工作?我有点不确定需要更改什么来触发更新源。
该网站提供了这样的解释:现在,每次更改数据上下文的“TestText”属性时,WPFTextBoxAutoComplete 都会为您提供自动完成建议。
但是,我不相信我的 DataContext 具有“名称”属性。
编辑:
/**** AutoComplete ****/
public static readonly DependencyProperty AutoCompleteTest = DependencyProperty.Register(
"Test", typeof(string), typeof(CompanyManagement), new PropertyMetadata(default(string)));
public string Test
{
get { return (string)GetValue(AutoCompleteTest); }
set { SetValue(AutoCompleteTest, value); }
}
文本框 XAML
<TextBox
Width="250" Height="50" HorizontalAlignment="Center"
Text="{Binding Test, UpdateSourceTrigger=PropertyChanged}"
behaviors:AutoCompleteBehavior.AutoCompleteItemsSource="{Binding Employees}"
/>
【问题讨论】:
-
您可以调试绑定并查看文本到底发生了什么。您可以通过将
Text="{Binding Name, diagnostics:PresentationTraceSources.TraceLevel=High, UpdateSourceTrigger=PropertyChanged}添加到文本并将xmlns:diagnostics="clr-namespace:System.Diagnostics;assembly=WindowsBase"添加到窗口定义来实现。
标签: c# wpf autocomplete updatesourcetrigger