gpt4 book ai didi

data-binding - 数据绑定(bind)文本框

转载 作者:行者123 更新时间:2023-12-01 10:10:58 25 4
gpt4 key购买 nike

嗯,我是 MVVM 的新手,所以欢迎任何提示和建议:)

我想跟踪用户名和密码,用户可以在“设置” View 中进行设置。在 SettingsViewModel 中,我有这 2 个字段的 2 个属性,它们绑定(bind)到 View 上的文本框。我在应用栏上添加了一个保存按钮,并通过 RelayCommand 在用户单击它时在 ViewModel 上执行一个方法。

现在出了什么问题:

  • 当用户在文本框中输入但没有退出,而是直接按下保存时,该值还没有数据绑定(bind)。那么你如何解决这个问题呢?是使用 coding4fun 库中的 coding4fun:TextBoxBinding.UpdateSourceOnChange="True"功能的唯一方法吗?

  • 当用户在文本框中输入数据并且它是数据绑定(bind)的时,离开设置页面并返回到它仍然会保留该数据。只要用户没有按下保存按钮,我该如何清除它?有点奇怪,当数据尚未保存时,您将数据保留在页面上......但是因为我使用 MVVMLight,页面是在 ViewModelLocator 中静态创建的,并且只要程序运行就保持“事件”状态。

就像我说的,欢迎任何提示、技巧和建议:)

最佳答案

回复 1:这是一个 known issue如果最后一个具有焦点的控件是文本框,并且您单击应用栏按钮,则其最新值未正确数据绑定(bind)。在我的应用栏点击事件处理程序中,如果最后一个获得焦点的控件是文本框或密码框,我将调用以下方法来强制进行数据绑定(bind)。

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();
}
}

关于data-binding - 数据绑定(bind)文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5064347/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com