Data binding 数据绑定文本框

Data binding 数据绑定文本框,data-binding,mvvm,windows-phone-7,Data Binding,Mvvm,Windows Phone 7,嗯,我对MVVM有点陌生,所以欢迎提供任何提示和建议:) 我想记录用户名和密码,用户可以在设置视图中设置。 在SettingsViewModel中,我为绑定到视图上文本框的这两个字段提供了两个属性。 我在应用程序栏上添加了一个Save按钮,通过一个RelayCommand,当用户单击它时,它会在ViewModel上执行一个方法 现在出了什么问题: 当用户在文本框中键入而不退出文本框,但直接按save键时,该值尚未被数据索引。那么你如何解决这个问题呢?使用coding4fun库中的coding4

嗯,我对MVVM有点陌生,所以欢迎提供任何提示和建议:)

我想记录用户名和密码,用户可以在设置视图中设置。 在SettingsViewModel中,我为绑定到视图上文本框的这两个字段提供了两个属性。 我在应用程序栏上添加了一个Save按钮,通过一个RelayCommand,当用户单击它时,它会在ViewModel上执行一个方法

现在出了什么问题:

  • 当用户在文本框中键入而不退出文本框,但直接按save键时,该值尚未被数据索引。那么你如何解决这个问题呢?使用coding4fun库中的coding4fun:TextBoxBinding.updateSourceChange=“True”功能的唯一方法是什么

  • 当用户在文本框中输入数据并进行数据绑定时,离开设置页面并返回该页面仍将保留该数据。只要用户未按下“保存”按钮,我如何清除此项?有点奇怪,当数据还没有保存的时候,你却把它保存在页面上。。。但是因为我使用MVVMLight,所以页面是在ViewModelLocator中静态创建的,只要程序运行,页面就会保持“活动”

正如我所说,欢迎您提供任何提示、提示和建议:)

1-在
文本框上设置绑定到
PropertyChanged

<TextBox Text="{Binding MyProperty, UpdateSourceTrigger=PropertyChanged}" />

2-我没有使用MVVM Light Toolkit,但它可能具有激活视图模型的概念,您可以在视图模型中将属性重置为其默认值。如果没有,那么看看哪一个支持这个概念。

Re 1:这是一个如果上一个有焦点的控件是一个文本框,并且你点击一个应用程序栏按钮,它的最新值没有正确的数据绑定。在appbar click事件处理程序中,如果最后一个具有焦点的控件是textbox或passwordbox,则调用以下方法强制执行数据绑定

private static void UpdateBoundText()
{
    var focusObj = FocusManager.GetFocusedElement();
    if (focusObj == null) return;
    var binding = focusObj is TextBox ? ((TextBox)focusObj).GetBindingExpression(TextBox.TextProperty)
                : focusObj is PasswordBox ? ((PasswordBox)focusObj).GetBindingExpression(PasswordBox.PasswordProperty) 
                : null;
    if (binding != null)
    {
        binding.UpdateSource();
    }
}

我看了一下UpdateSourceTracger,结果正好相反:)。我已经将其设置为显式,并在用户单击Savebutton时自己从代码中调用UpdateSource!谢谢你的提示!!与我说的相反,这是一个不错的政策:)