键盘按下Enter键时触发事件。TextBox虽然双向绑定到CurrentPageNumber,但是Enter事件触发时,此时焦点还在textbox上时,后台CurrentPageNumber 的值仍未动态更新(双向绑定未触发)。解决办法Text="{Binding CurrentPageNumber, UpdateSourceTrigger=PropertyChanged}" ,Enter事件触发时,即使textbox未失去焦点,后台CurrentPageNumber也动态更新到最后一次输入的值。
<TextBox Name="lblCurPage" Height="23" Width="35" Text="{Binding CurrentPageNumber}"
VerticalContentAlignment="Center" HorizontalContentAlignment="Center" >
<TextBox.InputBindings>
<KeyBinding Command="{Binding EnterCommand}" Key="Enter"/>
</TextBox.InputBindings>
</TextBox>
对应cs
private int currentPageNumber;
public int CurrentPageNumber
{
get { return currentPageNumber; }
set
{
currentPageNumber = value;
OnPropertyChanged(new PropertyChangedEventArgs("CurrentPageNumber"));
}
}
public ICommand EnterCommand { get; set; }
EnterCommand = new DelegateCommand(EnterPress);
private void EnterPress()
{
CurrentPageNumber = (CurrentPageNumber < 1 || CurrentPageNumber > MaxPageCount) ? 1 : CurrentPageNumber;
}