xaml - TextBox Binding TwoWay 在失去焦点之前不会更新 WP7

标签 xaml silverlight windows-phone-7 data-binding

我有一个页面,其中包含一些用于数据输入的文本框。文本框的绑定(bind)设置为TwoWay。仅当文本框失去焦点时,我的 View 模型中的数据才会更新。如果我单击按钮(例如“保存”),并且文本框仍然具有焦点,则保存事件时我的 View 模型中的文本框中的更改不会更改。

有没有办法让绑定(bind)在失去焦点之前保存文本框的值?或者我需要在保存事件中做一些事情吗?

最佳答案

我假设您的“保存”按钮是一个ApplicationBarButton(不是普通按钮)。对于普通按钮,它会起作用,因为它们获得焦点,因此数据绑定(bind)将会启动。

对于手机上的 ApplicationBarButtons 来说,情况略有不同,因为它们不会将焦点从客户端应用程序上移开。为了确保单击“保存”按钮时启动数据绑定(bind),您可以在处理程序中添加以下代码:

object focusObj = FocusManager.GetFocusedElement();
if (focusObj != null && focusObj is TextBox)
{
    var binding = (focusObj as TextBox).GetBindingExpression(TextBox.TextProperty);
    binding.UpdateSource();
}

关于xaml - TextBox Binding TwoWay 在失去焦点之前不会更新 WP7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5569768/

相关文章:

c# - 使用 XAML/WPF 的路径/矢量的(自动)动画

silverlight - 如何在渲染前获取 StackPanel 高度?

Silverlight与Adobe Air

windows-phone-7 - 在 ContextMenu.MenuItem DataTemplate 中使用 ScrollViewer

xaml - 将 Canvas 与多条路径合并为一条路径

c# - WPF Visual Studio 设计器中的错误

c# - Xamarin 中是否有针对标签上的 GestureRecognizer 的新闻和发布 Activity ?

silverlight - ItemsControl 中的 MVVM Light 命令

c# - 将 Linq2SQL 简单查询转换为 CompiledQueries 以提高应用程序性能

c# - 使用 RSS 提要 XML 并显示信息