2013-03-07 30 views
9

我想知道如何標記以下的XAML。我有一個基於ICommand的對象的視圖模型。來自其他對象的wpf命令參數

我有一個文本框和一個按鈕的窗體。該按鈕通過Command="{Binding MyButtonInViewModel}"連接到ICommand對象。

我想要做的就是設置按鈕的CommandParameter等於文本框文本中的任何內容,例如調用「搜索」,但顯然不知道如何鉤住視圖中的控件。

回答

17

以下XAML應該將TextBox中的文本作爲參數傳遞給您的命令。

<TextBlock x:Name="searchBox" /> 

<Button Command="{Binding MyButtonInViewModel}" 
     CommandParameter="{Binding Text, ElementName=searchBox}"/> 
5

您可以通過在綁定中設置ElementName來完成此操作。 下面是一個例子:

<TextBox x:Name="textBox"/> 
<Button Content="Button" 
     Command="{Binding ButtonCommand}" 
     CommandParameter="{Binding ElementName=textBox, Path=Text}"/> 
1

如果綁定文本框本身到該按鈕的命令參數,而不僅僅是文本框的文本屬性,你可以操縱你的視圖模型的文本框,例如,明確文本屬性。

<TextBox x:Name="searchBox" /> 

<Button Command="{Binding MyButtonInViewModel}" 
     CommandParameter="{Binding ElementName=searchBox}" /> 

查看型號代碼

private void SearchStuff(TextBox searchBox) 
{ 
    //do stuff with searchBox.Text 
    searchBox.Text = ""; 
} 

也許不是爲這個偉大的例子,你可能要保持與搜索結果一起顯示的搜索文本。更好的日誌記錄或消息應用程序,當你想要點擊按鈕時文本被「消耗」。

+0

我很感謝你的回答,但看看答案......如果有任何提供了複選標記,這意味着它已解決。這是大約一年前,我超越了這個項目。 – DRapp 2014-02-27 17:07:49

+4

@DRapp:在SO上的答案不僅僅針對提出問題的人,還可能對社區其他人有用。從虛擬機使用UI是否是一個好主意是另一個問題。 – nightcoder 2015-03-18 14:36:34