2013-10-22 50 views
0

讓我首先說我是MVVM的新手,所以如果問題不清楚請告訴我,我會盡力澄清。按Enter鍵時從文本框觸發命令?

我已經正確XAML實現的buttonmultibinding,代碼如下:

<Button x:Name="licenceFilterSet" Content="Search License" Command="{Binding licenseSearchCommand}" Click="licenceFilterButtonClick" HorizontalAlignment="Right" Width="94"> 
    <Button.Resources> 
     <local:SearchFilterConverter x:Key="SearchFilterConverter" /> 
    </Button.Resources> 
    <Button.CommandParameter> 
     <MultiBinding Converter="{StaticResource SearchFilterConverter}"> 
      <Binding Path="Text" ElementName="filterLicenseTextBox" /> 
      <Binding Path="IsChecked" ElementName="regularExpressionCheckBox" /> 
     </MultiBinding> 
    </Button.CommandParameter> 
</Button> 

(文本框的值和一個複選框被髮送到被繼續)。

現在我想添加完全相同的功能到文本框,用戶可以在textBox中直接按ENTER並執行相同的操作。

我嘗試了下面的代碼,但似乎每個字符現在都發送到命令,但我只想要命令發送時,用戶按ENTER。我應該改變什麼?

<TextBox Name="filterLicenseTextBox"> 
     <TextBox.Resources> 
      <local:SearchFilterConverter x:Key="SearchFilterConverter" /> 
     </TextBox.Resources> 

     <TextBox.Text> 
      <MultiBinding Converter="{StaticResource SearchFilterConverter}"> 
       <Binding Path="Text" ElementName="filterLicenseTextBox" Mode="OneWay"/> 
       <Binding Path="IsChecked" ElementName="regularExpressionCheckBox" Mode="OneWay"/> 
      </MultiBinding> 
     </TextBox.Text> 
     <TextBox.InputBindings> 
      <KeyBinding Key="Enter" Command="{Binding licenseSearchCommand}"> 
      </KeyBinding> 
     </TextBox.InputBindings> 
</TextBox> 
+1

我不明白'TextBox.Text'中的'MultiBinding'應該完成...在你的'Button'中,你在CommandParameter屬性中有相同的代碼。另外,請顯示你的'Converter'代碼。 – Sheridan

+0

只是想知道你的問題是答案,如果是的話,你能接受答案並關閉它:) – Noctis

回答

3

簡短的回答是:

上的按鈕使用IsDefault:現在

<Button IsDefault="true" 
    Click= "licenceFilterButtonClick" 
    Content="Search License" ... /> 

Enter鍵被綁定到該按鈕點擊,如果你打Enter上窗口中任何地方的按鈕,它會工作。

的(位)長的答案是:

看看this article,它解釋了爲什麼(創建默認按鈕),您可以使用取消爲好,一旦你瞭解它們如何工作:)

相關問題