WPF文本框绑定更新
问题描述:
我有一个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
不会更新。
答
您必须使用updatesourcetrigger在XAML中,如:
<TextBox x:Name="SearchBox" Text="{Binding SearchText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged"/>
答
执行以下操作:
<TextBox x:Name="SearchBox" Text="{Binding SearchText, Mode=TwoWay}" />
,并在您的代码隐藏在DataContext属性分配给您的实例,即
SearchEngine searchEngine = new SearchEngine();
SearchBox.DataContext = searchEngine;
见here。
'NotifyPropertyChanged();'为什么这个调用没有财产的名称?另外,检查你的'UpdateSourceTrigger'属性。如果你想在输入时更新属性,使用'PropertyChanged'值 – acrilige 2013-02-25 12:18:21
我不认为你可以使用'SearchEngine'作为静态资源。您是否正确实施了NotifyPropertyChanged()? – 2013-02-25 12:18:35
我确定在'NotifyPropertyChanged()'执行正确。你能解释更多一点关于'UpdateSourceTrigger' – RayOldProf 2013-02-25 12:24:33