使用WPF和C#和LinqToXml创建纸质表单的无纸在线版本时对字段导航进行编码
使用WPF(使用C#和LinqToXml),我正在复制现有纸质表单的无纸版本。现有表单包含每个框一个字符的文本字符串。我已经使用XAML复制了纸质表单的外观。如何将代码添加到一个字符的文本框中,以便在控件填充后自动将控件发送到下一个文本框(而不要求用户切换到下一个文本框)? 此外,这些文本框序列便于输入关键字段值。一旦最后一个一个字符的文本框从键盘接收到一个值,我如何编写事件触发器以自动从Xml数据文件检索适当的数据记录字段值?使用WPF和C#和LinqToXml创建纸质表单的无纸在线版本时对字段导航进行编码,c#,wpf,xaml,textbox,C#,Wpf,Xaml,Textbox,使用WPF(使用C#和LinqToXml),我正在复制现有纸质表单的无纸版本。现有表单包含每个框一个字符的文本字符串。我已经使用XAML复制了纸质表单的外观。如何将代码添加到一个字符的文本框中,以便在控件填充后自动将控件发送到下一个文本框(而不要求用户切换到下一个文本框)? 此外,这些文本框序列便于输入关键字段值。一旦最后一个一个字符的文本框从键盘接收到一个值,我如何编写事件触发器以自动从Xml数据文件检索适当的数据记录字段值? 我是否需要在表单上包含一个按钮,或者我是否可以对表单进行编码,以便
我是否需要在表单上包含一个按钮,或者我是否可以对表单进行编码,以便在最后一个字符的文本框已填充时自动进行检索?实现您想要做的最简单的方法可能是创建一个表示代码的类,该类通过绑定到文本框的属性公开数字(或通过一个属性作为字符串,然后使用ValueConverter更新相应的数字)并实现INotifyPropertyChanged接口(每次设置属性时都会引发PropertyChanged事件。然后,您可以创建一个处理程序,侦听来自code对象的PropertyChanged事件,检查所有数字是否已填充,如果已填充,则从XML加载数据,或者您也可以在对象内执行该检查,并引发一些其他事件t应用程序不知道输入了完整代码 至于如何移动到下一个textbox,您可以创建一个TextChanged事件处理程序来调用UIElement.MoveFocus()方法,并将其注册到所有textbox,如下所示:
private void textChanged(object sender, TextChangedEventArgs e)
{
TextBox textBox = sender as TextBox;
if (textBox != null && textBox.Text.Length == 1)
{
TraversalRequest tr = new TraversalRequest(FocusNavigationDirection.Next);
textBox.MoveFocus(tr);
}
}
您可能还希望将每个文本框的MaxLength设置为1,以防止复制和粘贴文本等。您还可以查看用于检查非法字符的ValidationRules等内容
希望这能有所帮助(问问你是否需要帮助)
问候,,
James您在这里提出了两个截然不同的问题。如果删除此问题并打开两个新问题,您的运气可能会更好。