2010-04-28 62 views
0

我需要一些幫助來實現某些控件中的常見行爲。WPF和動態創建控件的事件

在我的WPF應用程序,我有一個包含面板和按鈕主要形式有:


該按鈕將運行一個保存方法,點擊時。Save方法從窗體讀取一些數據並將數據保存到數據庫。

面板中填充了動態創建的控件(如文本框,下拉列表等)。主窗體實例化一個MainViewModel類。這個MainViewModel類實例化一個名爲UIFactory的類。所以我們在這裏有3個關卡。

在UIFactory類中正在創建控件。主窗體中的面板作爲參數發送到MainModelView類中稱爲GenerateUI的方法。 MainViewModel類中的此GenerateUI方法在UIFactory類上調用GenerateControls方法,該方法將同一個面板作爲參數。 UIFactory類中的GenerateControls方法然後在面板上添加動態創建的控件。

我想要實現的是,只要用戶在輸入其中一個動態創建的控件(如文本框)時敲擊ENTER,我希望該行爲與單擊主窗體中的按鈕相同。但我該怎麼做?我想過在我的控件上實現Routed事件,但我無法弄清楚如何去做。你能告訴我如何實現我的目標嗎?

最好的問候,

OKB

回答

0

也許Keyboard.KeyUp附加事件可能會幫助您。您可以在包含動態創建控件的主面板上設置它,然後在按下的按鍵是ENTER鍵時執行保存操作。

0

我還是設法創建工作aroind我的問題:

我所做的是創建一個自定義用戶控件(讓我們稱之爲集裝箱)。此控件託管在使用WindowsFormsHost而不是面板的wpf應用程序中。然後,我將動態創建的用戶控件添加到新的自定義用戶控件(容器)中,並在每個子控件的KeyUp事件上添加一個KeyEventHandler。 我在我的容器中創建了一個自定義事件和事件處理程序,它將捕獲子控件中的所有KeyUp事件,檢查e.KeyValue == 13(ENTER),然後從容器中提取我的自定義事件,該容器將在我的wpf形式。醜陋的,但它的作品。