为什么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 setter上设置了断点,但它从未起作用。
答案 0 :(得分:3)
<TextBox Text="{Binding Path=SearchPlayer,
RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:MainWindow}}
Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged}" />
答案 1 :(得分:2)
我认为Binding Path=local:MainWindow.SearchPlayer
不会起作用,因为MainWindow是一个类,而不是一个实例。如果SearchPlayer是静态的,它可能会起作用,但我不认为你想要那样。
只需使用Binding Path=SearchPlayer
并确保正确设置DataContext。在MainWindow的构造函数中:this.DataContext=this;
(根据文本框的位置而有所不同)。
请注意,MainWindow应该实现INotifyProperty接口,而SearchPlayer的Setter应该调用OnPropertyChanged。