2013-02-25 2 views
0

나는 텍스트 상자를 가지고 있고 그것이 문자열 속성에 바인더 제본되어WPF TextBox에 데이터 바인딩 업데이트

텍스트 상자 :

<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(); 
      } 
     } 
    } 
} 

문제 TextBox에 입력 할 때 SearchText이 업데이트되지 않습니다.

+0

'NotifyPropertyChanged(); '왜 속성 이름이없는이 호출? 또한'UpdateSourceTrigger' 속성을 확인하십시오. 타이핑 할 때 속성을 업데이트하려면'PropertyChanged' 값을 사용하십시오 – acrilige

+0

'SearchEngine'을 정적 리소스로 사용할 수 있다고 생각하지 않습니다. NotifyPropertyChanged()를 올바르게 구현 했습니까? –

+0

'NotifyPropertyChanged()'가 올바르게 구현되었는지 확인하십시오. 'UpdateSourceTrigger'에 대해서 좀 더 설명 할 수 있습니까 – RayOldProf

답변

0

당신처럼 XAML에 updatesourcetrigger을 사용할 수 있습니다

<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를 참조하십시오.