让我先说我是MVVM
新手,所以请放心,如果问题不清楚,请告诉我,我会尽力澄清。
我已经正确地实现了XAML
multibinding
的button
,代码如下:
<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
,它就会起作用。
(位)长答案是:
看看这篇文章,它解释了原因(创建一个默认按钮),一旦你了解了它们的工作原理,你也可以使用取消:)