2017-01-02 40 views
1

我有一個TextBox與下面的「確定」按鈕。 'OK'按鈕運行我的RunPanel靜態類中的方法,如下所示:RunPanel.RunOK();C#WPF - 如何綁定文本框輸入鍵按下方法?

我想按TextBox中輸入也執行方法RunPanel.RunOK()

我該如何在XAML中做到這一點?

我遇到的答案似乎令人困惑,所以我想知道如果有人能幫助我。

+0

什麼是RunPanel?哪裏寫的?在代碼後面?或某種模式?你正在關注任何模式(mvvm,prism ...)?你正在編寫一個應用程序或控件? – WPFUser

回答

0

KeyBinding可能是你最好的選擇。

例如:

<Window> 
    <Window.InputBindings> 
    <KeyBinding Command="{Binding SomeCommand, RelativeSource={RelativeSource Self}}" Modifiers="Control" Key="F5"></KeyBinding> 
    </Window.InputBindings> 
</Window> 
+0

我只是好奇:這是綁定到'F5'鍵或'輸入'鍵? – zx485

+0

是的,我得到了那麼遠 - 但是我想知道如何用RunPanel.RunOK()替換'SomeCommand'並讓它工作? –

+0

@ zx485這是用於CTRL + F5,作爲一個通用示例。我在那裏使用Modifiers來顯示如何使用鍵修飾符 –

3
private void textBox_KeyUp(object sender, KeyEventArgs e) 
    { 
     if(e.Key == Key.Return) 
     { 
      MessageBox.Show("Enter key pressed, put your method in here!"); 
     } 
    } 

這不會幫助你執行你在XAML規定的方法,但是具有文本訂閱KeyUp事件,然後執行在其上輸入的密鑰檢查解決您的問題。在這種情況下,您可以將RunPanel.RunOK()放入if語句中,如果在文本框內按下回車鍵,則會觸發。

+1

對不起。我編輯了答案,並試圖澄清爲什麼它解決了這個問題。 –

+0

完美。謝謝。願您在本網站的未來光明燦爛,您可以貢獻自己的力量,獲得許多信譽積分和越來越多的訪問權限,並利用社區提供的許多獎勵,並查看評論鏈接:-)請記住,有徽章和帽子,並且當你付出很多會費時,不僅因爲你得到了社區的尊重,而且獲得了一些整潔的功能:-) – clearlight

+0

我意識到了這個解決方案,但是我的目的是僅僅做這個XAML,因爲我認爲它更乾淨,但唉,我可以使用它。 –

0

我怎麼能在XAML中做到這一點?

XAML是一個標記語言,你不能真的調用它的方法。您可以使用ObjectDataProvider綁定到一個方法,如下所述:http://www.devcurry.com/2011/03/wpf-4-using-objectdataprovider-for.html

但是,如果您想在點擊按鈕時執行某些操作,您應該綁定到視圖模型的命令,並在Execute方法中調用您的靜態方法這個命令。

儘量在XAML中儘可能地嘗試所有內容,只是爲了消除代碼,通常被認爲是反模式。

MVVM不是關於消除代碼,它主要是關注問題的分離,而C#是一種比XAML更具表現力和更簡潔的語言。因此,您應該使用C#語言等編程來實現應用程序的行爲,並使用XAML來定義可視化表示和UI的佈局。