0

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

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

好的

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

该面板填充了动态创建的控件(例如文本框、下拉列表等)。主窗体实例化一个 MainViewModel 类。这个 MainViewModel 类实例化了一个名为 UIFactory 的类。所以我们这里有3个级别。

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

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

此致,

OKB

4

2 回答 2

0

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

我所做的是创建一个自定义用户控件(我们称它为容器)。此控件使用 WindowsFormsHost 而不是面板托管在我的 wpf 应用程序中。然后我将动态创建的用户控件添加到我的新自定义用户控件(容器)中,并在每个子控件的 KeyUp 事件上添加一个 KeyEventHandler。我在我的容器中创建了一个自定义事件和事件处理程序,它将捕获来自子控件的所有 KeyUp 事件,检查 e.KeyValue == 13 (ENTER),然后从将在我的 wpf 中处理的容器中引发我的自定义事件形式。丑陋的h * ll,但它的工作原理。

于 2010-05-07T08:16:47.287 回答
0

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

于 2010-04-28T09:11:00.400 回答