2013-02-25 70 views
0

我有一個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

回答

0

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

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

執行以下操作:

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

,並在您的代碼隱藏在DataContext屬性分配給您的實例,即

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

here