Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用WPF和C#和LinqToXml创建纸质表单的无纸在线版本时对字段导航进行编码_C#_Wpf_Xaml_Textbox - Fatal编程技术网

使用WPF和C#和LinqToXml创建纸质表单的无纸在线版本时对字段导航进行编码

使用WPF和C#和LinqToXml创建纸质表单的无纸在线版本时对字段导航进行编码,c#,wpf,xaml,textbox,C#,Wpf,Xaml,Textbox,使用WPF(使用C#和LinqToXml),我正在复制现有纸质表单的无纸版本。现有表单包含每个框一个字符的文本字符串。我已经使用XAML复制了纸质表单的外观。如何将代码添加到一个字符的文本框中,以便在控件填充后自动将控件发送到下一个文本框(而不要求用户切换到下一个文本框)? 此外,这些文本框序列便于输入关键字段值。一旦最后一个一个字符的文本框从键盘接收到一个值,我如何编写事件触发器以自动从Xml数据文件检索适当的数据记录字段值? 我是否需要在表单上包含一个按钮,或者我是否可以对表单进行编码,以便

使用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

您在这里提出了两个截然不同的问题。如果删除此问题并打开两个新问题,您的运气可能会更好。