2010-07-04 11 views
0

왜 데이터 바인딩이 작동하지 않습니까?왜 데이터 바인딩이 작동하지 않습니까?

public partial class MainWindow : Window 
    { 
     private Store store = new Store(); 
     private string _searchPlayer; 
     public string SearchPlayer 
     { 
      get 
      { 
       return _searchPlayer; 
      } 
      set 
      { 
       _searchPlayer = value; 
       if(_searchPlayer!="") 
       { 
        ACT.DataContext = store.SearchedPlayers 
         .Where(x => x.StartsWith(_searchPlayer)).ToList(); 
       } 
       else 
       { 
        ACT.DataContext = store.Last10SearchedPlayers; 
       } 
      } 
     } 

     public MainWindow() 
     {...............} 

내가 SearchPlayer 세터에 중단 점을 설정하지만이 일을 결코 :

<TextBox Text="{Binding Path=local:MainWindow.SearchPlayer, 
    Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" /> 

이 내 클래스입니다.

+1

이전에'Path = local : MainWindow.SearchPlayer' 바인딩 구문을 본 적이 없습니다. 어디에서 왔습니까? – Gabe

답변

2

MainWindow가 인스턴스가 아니기 때문에 Binding Path=local:MainWindow.SearchPlayer이 작동하지 않을 것이라고 생각합니다. SearchPlayer가 정적이라면 효과가있을 수 있지만 원하는 것은 아닌 것 같습니다.

Binding Path=SearchPlayer을 사용하고 DataContext가 올바르게 설정되었는지 확인하십시오. MainWindow의 생성자 : this.DataContext=this; (텍스트 상자의 위치에 따라 다릅니다).

MainWindow는 INotifyProperty 인터페이스를 구현해야하며 SearchPlayer의 Setter는 OnPropertyChanged를 호출해야합니다.

3
<TextBox Text="{Binding Path=SearchPlayer, 
         RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:MainWindow}} 
         Mode=TwoWay, 
         UpdateSourceTrigger=PropertyChanged}" /> 
+0

멋지지만 실제로는 여기에서 가장 적절한 방법입니까? –

관련 문제