我想使用Tab键来验证插入文本框的值。如果验证顺利,我还希望我的Tab键移动到下一个文本框。
所以我有我的XAML文件:
<StackPanel FocusManager.FocusedElement="{Binding ElementName=DVM_Positive_ReadOut}" Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Center" Height="400" Width="602" >
<StackPanel Orientation="Horizontal" Margin="5" Height="80">
<Label HorizontalContentAlignment="Left" VerticalAlignment="Center" Padding="5" FontSize="25" Content="DVM Positive Readout" Width="290"/>
<TextBox Style="{StaticResource CodeDigit}" x:Name="DVM_Positive_ReadOut" Width="300" Height="50" IsReadOnly="{Binding Positive_ReadOnly}" Text="{Binding DVM_Pos, UpdateSourceTrigger=PropertyChanged}">
<TextBox.InputBindings>
<KeyBinding Key="Tab" Command="{Binding ValidateReadOnly}" CommandParameter="{Binding ElementName=DVM_Positive_ReadOut}"/>
</TextBox.InputBindings>
</TextBox>
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="5" Height="80">
<Label HorizontalContentAlignment="Left" VerticalAlignment="Center" Padding="5" FontSize="25" Content="DVM Negative Readout" Width="290" />
<TextBox Style="{StaticResource CodeDigit}" x:Name="DVM_Negavtive_ReadOut" Width="300" Height="50" IsReadOnly="{Binding Negative_ReadOnly}" Text="{Binding DVM_Neg, UpdateSourceTrigger=PropertyChanged}">
<TextBox.InputBindings>
<KeyBinding Key="Tab" Command="{Binding ValidateReadOnly}" CommandParameter="{Binding ElementName=DVM_Negavtive_ReadOut}"/>
</TextBox.InputBindings>
</TextBox>
</StackPanel>
<StackPanel >
<Button Content="Enter" FontSize="25" Width="300" Height="50" Margin="50">
<Button.InputBindings>
<KeyBinding Key="Return" Command="{Binding ValidateInsert}" CommandParameter="{Binding ElementName=EnterButton}"/>
</Button.InputBindings>
</Button>
<Label HorizontalContentAlignment="Center" VerticalAlignment="Center" Padding="5" FontSize="25" Content="{Binding TestGroupLabel}" Width="290" />
</StackPanel>
</StackPanel>
正如您在第7行所看到的,我将Tab键绑定到我的ViewModel中使用的ValidateReadOnly。 现在我也想用Tab键在文本框之间切换。所以我在我的代码后面写了文件:
private void Window_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Space)
{
e.Handled = true;
return;
}
if (e.Key == Key.Tab)
{
TraversalRequest tRequest = new TraversalRequest(FocusNavigationDirection.Next);
UIElement keyboardFocus = Keyboard.FocusedElement as UIElement;
if (keyboardFocus != null)
{
keyboardFocus.MoveFocus(tRequest);
}
e.Handled = true;
}
}
这里的问题是我不能将我的Tab键用于我的代码隐藏文件中的代码,因为我已经将Tab键绑定到我的ViewModel中的ValidateReadOnly。
是的,我可以使用验证码在我的ViewModel中编写代码隐藏文件中的焦点代码,但我发现很难在ViewModel中使用焦点。