2013-10-22 51 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,它解释了为什么(创建默认按钮),您可以使用取消为好,一旦你了解它们如何工作:)

相关问题