我需要一些帮助才能在某些控件中实现常见行为。
在我的WPF应用程序中,我有一个包含面板和按钮的主窗体:
好
按钮将在单击时运行Save方法.Save方法从表单中读取一些数据并将数据保存到数据库。
该面板填充了动态创建的控件(例如文本框,下拉列表等)。主窗体实例化MainViewModel类。此MainViewModel类实例化一个名为UIFactory的类。所以我们在这里有3个级别。
在UIFactory类中,正在创建控件。主窗体中的Panel作为参数发送到MainModelView类中名为GenerateUI的方法。 MainViewModel类中的此GenerateUI方法在UIFactory类上调用GenerateControls方法,该方法采用与参数相同的面板。然后,UIFactory类中的GenerateControls方法在面板上添加动态创建的控件。
我想要实现的是,当用户在键入其中一个动态创建的控件(例如文本框)时按Enter键时,我希望该行为与单击主窗体中的按钮相同。但是我该怎么做?我想在我的控件上实现Routed事件,但我无法弄清楚如何做到这一点。你能告诉我如何实现我的目标吗?
最诚挚的问候,
OKB
答案 0 :(得分:0)
也许Keyboard.KeyUp
附加事件可能会对您有所帮助。您可以在主面板上设置它,其中包含动态创建的控件,如果按下的键是ENTER键,则执行保存操作。
答案 1 :(得分:0)
我确实设法为我的问题创造了一份工作:
我所做的是创建一个自定义用户控件(让我们称之为容器)。此控件使用WindowsFormsHost而不是面板托管在我的wpf应用程序中。然后,我将动态创建的用户控件添加到我的新自定义用户控件(容器),并在每个子控件的KeyUp事件上添加KeyEventHandler。 我在我的容器中创建了一个自定义事件和事件处理程序,它将从子控件中捕获所有KeyUp事件,检查e.KeyValue == 13(ENTER),然后从将在我的wpf中处理的容器中提取我的自定义事件形成。丑陋如h * ll,但它确实有效。