我正在构建一个 Windows 应用商店应用程序,并且我有一个 TextBox 绑定(双向模式)到我的 TaskItem 对象的字符串“title”属性。
在对此 TextBox 进行 UI 更改并将其传播回源之后,我需要进行一些处理。
我想知道是否有办法检测目标(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 因为我实际上不需要将更改从源传播到目标。
我可以想到两个解决方案:
- 有没有办法在属性的设置器上使用 [CallerMemberName] ?如果有,我也许能够确定“标题”是由我自己的代码更改还是由于绑定而更改。
- 在 LostFocus 事件期间,放弃双向绑定并手动更新源。