0

首先让我说我是新手MVVM,所以请坦率地说,如果问题不清楚,请告诉我,我会尽力澄清。

我已经正确实现了一个buttonin XAMLwith multibinding,代码如下:

<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>

(文本框和复选框的值被发送以继续进行)。

现在我想将完全相同的功能添加到文本框,用户可以直接按下ENTERtextBox执行相同的操作。

我尝试了以下代码,但似乎每个字符现在都发送到命令,但我只希望在用户按下时发送命令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>
4

1 回答 1

3

简短的回答是:

使用IsDefault按钮上的:

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

现在Enter键绑定到这个按钮点击,如果你用按钮点击Enter窗口中的任何地方,它就会起作用。

(位)长的答案是:

看看这篇文章,它解释了原因(创建一个默认按钮),一旦你了解它们是如何工作的,你也可以使用取消:)

于 2013-10-23T12:53:27.000 回答