我正在构建一个Windows应用商店应用,我有一个TextBox绑定(双向模式)到我的TaskItem对象的字符串“title”属性。
我需要在对此TextBox进行更改之后对进行一些处理并传播回源。
我想知道是否有办法检测目标(TextBox的Text属性)何时发生了变化。我知道我可以通过处理TextBox的LostFocus事件来捕获此事件,但是在更新源之前触发此事件。
更新
结合:
<ScrollViewer
x:Name="itemDetail"
DataContext="{Binding SelectedItem, ElementName=itemListView}">
<TextBox x:Name="itemTitle" Text="{Binding Title, Mode=TwoWay}"/>
</ScrollViewer>
类和属性:
class TaskItem
{
public string Title { get; set; }
}
我没有实现INotifyPropertyChanged,因为我实际上不需要将更改从源传播到目标。
我可以想到两个解决方案:
答案 0 :(得分:1)
class TaskItem, INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
internal void NotifyPropertyChanged(String info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
private string title;
public string Title
{
get { return title; }
set
{
if (title == value) return;
title = value;
NotifyPropertyChanged("Title");
}
}
public TaskItem (string -title)
{ title = _title; }
// does not fire setter title lower case
// but the UI will have this value as ctor fires before render
// so get will reference the assigned value of title
}