2010-07-04 5 views
0

Почему DataBinding не работает?Почему DataBinding не работает?

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

это мой класс:

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 сеттера, но он никогда не работал.

+1

Я никогда не видел перед связыванием 'Path = local: MainWindow.SearchPlayer'. Откуда это? – Gabe

ответ

2

Я не думаю, что Binding Path=local:MainWindow.SearchPlayer будет работать, потому что MainWindow - это класс, а не экземпляр. Это может сработать, если SearchPlayer был статичным, но я не думаю, что вы этого хотите.

Просто используйте Binding Path=SearchPlayer и убедитесь, что DataContext установлен правильно. В конструкторе MainWindow: this.DataContext=this; (зависит от того, где находится текстовое поле).

Обратите внимание, что MainWindow должен реализовывать интерфейс INotifyProperty, а Setter SearchPlayer должен вызывать OnPropertyChanged.

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

Прохладный, но это действительно самый подходящий способ здесь? –

Смежные вопросы