【问题标题】:Windows Store TextBox - How to update binding on Enter key-up?Windows Store TextBox - 如何更新 Enter 键上的绑定?
【发布时间】:2014-04-29 12:03:54
【问题描述】:

在 Windows 应用商店应用程序中,我有一个 TextBox,并且我创建了一个附加属性 KeyUpEvent.MapsToCommand,它在使用中看起来像这样:

<TextBox 
    Text="{Binding UserGivenName, Mode=TwoWay}" 
    attachedProps:RequiresText.ToEnableControl="{Binding ElementName=SubmitNameButton}"
    attachedProps:KeyUpEvent.MapsToCommand="{Binding EnterNameCommand}"
/>

问题在于控件不会失去焦点,因此绑定永远不会更新。没有UpdateSourceTrigger,我无法找到一种方法来获取绑定本身并在附加属性中的代码中手动更新它。

我做错了吗?如果不能按键盘上的 Enter 键并调用命令,至少使用正确的视图模型数据,现在人们如何编写应用程序?

自 2008 年以来,我在 XAML 中几乎不断遇到这些看似小而巨大的问题,我已经厌倦了。

谢谢

卢克

更新

发现这是一个众所周知的痛点。

http://social.msdn.microsoft.com/Forums/windowsapps/en-US/775f1692-2837-471c-95fc-710bf0e9cc53/updatesourcetrigger-and-bindingexpressionbase-are-missing?forum=winappswithcsharp

我现在花了几个月的时间尝试构建一个 MVVM Windows Store 应用程序,但我正在考虑放弃。

【问题讨论】:

    标签: xaml winrt-xaml


    【解决方案1】:

    只是一些想法:

    【讨论】:

    • 感谢您的回复,一些好主意。当然,我迷上了 KeyUp 事件,但无法更新绑定。您粘贴的链接的代码不完整/不在屏幕上,所以我无法理解那里的技巧,但最后是“使用 Windows 8.1”——8.1 中有什么可以帮助这里的吗??
    • 我猜#3 中的技巧是结合 inerhiting 和覆盖 OnTextChanged。 #4:Windows 8.1 有 UpdateSourceTrigger。它还具有 mycontrol.GetBindingExpression().UpdateSource() ,您可以使用它来更新代码中的绑定。
    • 好的,所以#3 仍然不清楚,因为没有关于如何更新绑定的信息,但是具有GetBindingExpression 的 Windows 8.1 是一个启示。
    猜你喜欢
    • 1970-01-01
    • 2017-04-22
    • 2023-03-26
    • 1970-01-01
    • 2017-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多