UWP文本框文本绑定不起作用。

3

我在UWP中遇到了一些与TextBox.Text绑定相关的问题。我已经做了多年的WPF,通常知道在XAML中该怎么做,但是无法让这个绑定起作用...

我在XAML中有一个TextBox和一个Button。

<StackPanel Orientation="Horizontal"
            Margin="0,10,0,0">
    <TextBox Width="200" Text="{Binding SearchText, UpdateSourceTrigger=PropertyChanged}"/>
    <Button Margin="10,0,0,0"
            Command="{Binding SearchBusCommand}">Go</Button>
</StackPanel>

而且绑定属性在ViewModel中处于相同的作用域

public ICommand SearchBusCommand { get; }

public string SearchText { get; set; }

但是,当我在文本框中输入文本并点击按钮时,命令被执行,但SearchText的值为空...

我的期望是,当我在文本框中输入文本时,SearchText属性会更新为文本值。

如果我从ViewModel设置SearchText属性的值,则它会显示在文本框中。

1个回答

7

好的,看起来在UWP中,TextBox.Text属性的绑定默认是单向的..!

我必须将绑定设置为双向才能使其工作。

<TextBox Width="200" Text="{Binding SearchText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>

为什么他们要这样做!?

@AlexDrenea 但是为什么你想在 TextBox.Text 上进行单向绑定?那不是 TextBlock 的作用吗? - Glen Thomas
@GlenThomas Binding 在任何地方都使用默认的 OneWay 模式,它不取决于它所使用的控件/属性。如果它变化了,可能会让人感到困惑。 - Marian Dolinský
1
我拥有Xamarin专业证书,并开始使用UWP而没有教程。这就是为什么我来这里的原因。感谢您的回答。 - Ali123

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接