当用户开始键入wpf时启用一个按钮

本文关键字:按钮 一个 启用 开始 用户 wpf | 更新日期: 2023-09-27 18:20:30

我有3个文本框和一个搜索按钮。

<TextBox Grid.Row="1" Grid.ColumnSpan="2" VerticalAlignment="Center" HorizontalAlignment="Stretch" Text="{Binding Id, Mode=TwoWay}"/>
<TextBox Grid.Row="3" Grid.ColumnSpan="2" VerticalAlignment="Center" HorizontalAlignment="Stretch" Text="{Binding Name, Mode=TwoWay}"/>
<TextBox Grid.Row="5" Grid.ColumnSpan="2" VerticalAlignment="Center" HorizontalAlignment="Stretch" Text="{Binding Phone, Mode=TwoWay}"/>
<Button Grid.Row="8" Grid.ColumnSpan="2" Content="Search" Command="{Binding SearchPerson}" />

我已经实现了这样的逻辑,即用户在任何文本框中键入内容,然后离开文本框,此时搜索按钮将被启用。

但是,我希望当用户在任何文本框中"开始键入"(字符串不应为null或空白)时启用搜索按钮。

我该如何实现??

非常感谢。。。

当用户开始键入wpf时启用一个按钮

如果希望在键入时更新源,则需要将绑定上的UpdateSourceTrigger属性设置为PropertyChanged

因此,请将绑定更改为:

Text="{Binding Id, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Text="{Binding Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Text="{Binding Phone, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"

好的,只是将我的评论转换为答案。

如MSDN文档中所述

Text属性的默认UpdateSourceTrigger值为LostFocus。

因此,要使其"尽快",您只需要在TextBox.Text绑定上显式切换UpdateSourceTrigger=PropertyChanged

类似于(在每个TextBox中):

Text="{Binding Id, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"

为什么不使用简单的TextBox->OnTextChange事件:

button1.IsEnabled = !string.IsNullOrWhiteSpace((sender as TextBox).Text);