Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.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和事件_Wpf_Events_Controls_Routed - Fatal编程技术网

来自动态创建控件的WPF和事件

来自动态创建控件的WPF和事件,wpf,events,controls,routed,Wpf,Events,Controls,Routed,我需要一些帮助来实现一些控件中的常见行为 在我的WPF应用程序中,我有一个包含面板和按钮的主窗体: 好啊 单击按钮时将运行一个保存方法。保存方法从表单中读取一些数据,并将数据保存到数据库中 面板中填充了动态创建的控件,如textbox、DropDownList等。主窗体实例化了MainViewModel类。这个MainViewModel类实例化了一个名为UIFactory的类。我们这里有三个层次 在UIFactory类中,正在创建控件。主窗体中的面板作为参数发送给MainModelView类

我需要一些帮助来实现一些控件中的常见行为

在我的WPF应用程序中,我有一个包含面板和按钮的主窗体:

好啊

单击按钮时将运行一个保存方法。保存方法从表单中读取一些数据,并将数据保存到数据库中

面板中填充了动态创建的控件,如textbox、DropDownList等。主窗体实例化了MainViewModel类。这个MainViewModel类实例化了一个名为UIFactory的类。我们这里有三个层次

在UIFactory类中,正在创建控件。主窗体中的面板作为参数发送给MainModelView类中名为GenerateUI的方法。MainViewModel类中的GenerateUI方法调用UIFactory类上的GenerateControl方法,该方法将同一面板作为参数。然后UIFactory类中的GenerateControl方法在面板上添加动态创建的控件

我想要实现的是,每当用户在输入一个动态创建的控件(例如文本框)时点击ENTER键时,我希望该行为与单击主窗体中的按钮相同。但是我该怎么做呢?我想在我的控件上实现路由事件,但我不知道如何实现。你能告诉我如何实现我的目标吗

致以最良好的祝愿


OKB

可能附带的活动会对您有所帮助。您可以在包含动态创建控件的主面板上进行设置,然后如果按下的键是ENTER键,则执行保存操作。

我确实设法创建了解决问题的方法:

我所做的是创建一个自定义用户controllet,称之为容器。此控件使用WindowsFormsHost而不是面板托管在我的wpf应用程序中。然后,我将动态创建的用户控件添加到新的自定义用户控件容器中,并在每个子控件的KeyUp事件上添加KeyEventHandler。 我在容器中创建了一个自定义事件和事件处理程序,它将捕获子控件中的所有KeyUp事件,检查e.KeyValue==13是否输入,然后从将在我的wpf表单中处理的容器中引发自定义事件。虽然很难看,但很管用