按下回车键时从文本框触发命令



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

我已经正确地实现了XAML multibindingbutton,代码如下:

<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中添加完全相同的功能,用户可以直接按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>
简短

的回答是:

使用按钮上的IsDefault

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

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

(位)长答案是:

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

相关内容

  • 没有找到相关文章

最新更新