我有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或空格)时启用搜索按钮。
我如何实现这个?
非常感谢...
答案 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)
好的只是将我的评论转换为答案。
中所述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);