WPF文本框绑定更新

问题描述:

我有一个TextBox和它绑定到一个字符串属性:WPF文本框绑定更新

文本框:

<TextBox x:Name="SearchBox" 
    Text="{Binding SearchText, Source={StaticResource SearchEngine}, Mode=TwoWay}" 
</TextBox> 

和类被绑定到:

public class SearchEngine : ViewModelBase 
{ 
    private string _searchText = string.Empty; 

    public SearchEngine() { 
     Console.Out.WriteLine("this = {0}", this); 
     SearchText = "Search"; 
    } 

    public string SearchText 
    { 
     get { return _searchText; } 
     set 
     { 
      if (_searchText != value) 
      { 
       _searchText = value; 
       Console.Out.WriteLine("AAAAAAAAAAAA: " + value); 
       NotifyPropertyChanged(); 
      } 
     } 
    } 
} 

问题是当我输入文本框时,SearchText不会更新。

+0

'NotifyPropertyChanged();'为什么这个调用没有财产的名称?另外,检查你的'UpdateSourceTrigger'属性。如果你想在输入时更新属性,使用'PropertyChanged'值 – acrilige 2013-02-25 12:18:21

+0

我不认为你可以使用'SearchEngine'作为静态资源。您是否正确实施了NotifyPropertyChanged()? – 2013-02-25 12:18:35

+0

我确定在'NotifyPropertyChanged()'执行正确。你能解释更多一点关于'UpdateSourceTrigger' – RayOldProf 2013-02-25 12:24:33

您必须使用updatesourcetrigger在XAML中,如:

<TextBox x:Name="SearchBox" Text="{Binding SearchText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged"/> 

执行以下操作:

<TextBox x:Name="SearchBox" Text="{Binding SearchText, Mode=TwoWay}" /> 

,并在您的代码隐藏在DataContext属性分配给您的实例,即

SearchEngine searchEngine = new SearchEngine(); 
SearchBox.DataContext = searchEngine; 

here