首先让我说我是MVVM
的新手,所以如果问题不清楚,请告诉我,我会尽力澄清。
我已使用button
在XAML
中正确实施了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>
(发送文本框的值和复选框以继续)。
现在我想在textBox中添加完全相同的功能,用户可以在ENTER
中直接按textBox
并执行相同的操作。
我尝试了以下代码,但似乎现在每个字符都被发送到命令,但我只希望在用户按下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>
答案 0 :(得分:3)
简短的回答是:
使用按钮上的IsDefault
:
<Button IsDefault="true"
Click= "licenceFilterButtonClick"
Content="Search License" ... />
现在Enter
键绑定到此按钮单击,如果您使用按钮在窗口中的任何位置点击Enter
,它将起作用。
(位)长答案是:
看看this article,它解释了原因(创建默认按钮),一旦你理解了它们的工作方式,你也可以使用取消:)