我无法重现您描述的行为。我还认为您在 Text 属性的绑定定义中犯了错误(如果是这种情况,您应该在调试会话期间在 Visual Studio 的输出窗口中遇到绑定错误)。
我认为应该是
Text="{Binding IdSearch,
但我不能说因为我不知道你的班级结构。
我做了一个小例子来证明属性的延迟和更新按预期工作。当您在属性 IdSearch 的 setter 中设置 BreakPoint 并运行示例时,您将看到 setter 在指定的延迟时间后被调用。你输入单词的速度有多快并不重要。
XAML:
<Window x:Class="WpfApplication2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication2"
Title="MainWindow"
Width="525"
Height="350">
<Window.Resources>
<local:Dummy x:Key="CompassLogView" />
</Window.Resources>
<Grid>
<TextBox Text="{Binding IdSearch, Mode=TwoWay, Source={StaticResource CompassLogView}, UpdateSourceTrigger=PropertyChanged, Delay=2000}" />
</Grid>
</Window>
C#:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace WpfApplication2 {
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window {
public MainWindow() {
InitializeComponent();
}
}
public class Dummy {
private string _idSearch;
public string IdSearch {
get { return _idSearch; }
set {
if (_idSearch != value && value != null) {
_idSearch = value;
//NotifyPropertyChanged();
//SearchForID(_idSearch);
}
}
}
}
}