首页 > 解决方案 > 文本框双向绑定在文本框未聚焦之前不会传输。每次按键都需要更新

问题描述

在 C#/UWP 中,如何获得双向绑定以更新文本框中每次按键时的字段,而不是在键入结束时通过在填写文本框控件后取消焦点来更新字段?以下是详细信息:

我有一个绑定到类字符串变量的文本框。

<StackPanel Name="MyStackPanel Margin="10">
    <TextBox Header="MyTextBox:Item1" 
          Text="{Binding MyField, Mode=TwoWay}"/>
    <Button Name="MyButton" Content="Next" Click="Next_Item"/>
</StackPanel>

public class MyItem {
    public string MyField {get;set;}
}

public class MyPage : Page {
    MyItem MyItem1 = new MyItem();
    MyItem MyItem2 = new MyItem();

    public MyPage() {
        MyStackPanel.DataSource = MyItem1;
    }

    bool toggle = false;
    public MyButton_Click( ... ) {
        if (!toggle) { 
            MyStackPanel.DataSource = MyItem2;
            MyTextBox.Header = "MyTextBox:Item2";
            toggle = true;
        } 
        else {    
            MyStackPanel.DataSource = MyItem1;
            MyTextBox.Header = "MyTextBox:Item1";
            toggle = false;
        }        
    }

我遇到的问题是,当我填写 MyTextBox,然后单击 MyButton 而没有取消聚焦 MyTextBox 控件时,在这种情况下,双向绑定无法将 MyTextBox 的文本复制回绑定对象 MyItem1.MyField . 但是,如果我在 MyTextBox 中键入内容,然后取消聚焦 MyTextBox 控件,然后单击按钮,则绑定有效。

有关如何解决此问题的任何项目?

标签: c#uwp

解决方案


如果您希望在键入时更新源,请将绑定的 UpdateSourceTrigger 设置为 PropertyChanged。

检查这个 micosoft 文档


推荐阅读