当用户开始输入wpf时启用按钮

时间:2013-07-01 14:35:32

标签: c# .net wpf data-binding wpf-4.0

我有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或空格)时启用搜索按钮。

我如何实现这个?

非常感谢...

3 个答案:

答案 0 :(得分:3)

如果您希望在输入时更新源代码,则需要将绑定的UpdateSourceTrigger property设置为PropertyChanged

所以将绑定更改为:

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

答案 1 :(得分:1)

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

MSDN Docs

中所述
  

TextBox.Text属性的默认UpdateSourceTrigger值为LostFocus。

因此,为了“尽快”,您只需要在UpdateSourceTrigger=PropertyChanged绑定上明确切换TextBox.Text

类似(在每个TextBox中):

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

答案 2 :(得分:0)

为什么不使用简单的TextBox-&gt; OnTextChange事件:

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