带有AcceptsReturn = true的Textbox KeyBinding

时间:2013-09-03 13:15:28

标签: c# .net wpf textbox

基本上我有一个文本框,当取消选中复选框时它会接受返回,当它被检查时我希望文本框对我写的KeyBinding作出反应。

<TextBox AcceptsReturn="{Binding IsChecked, ElementName=EnterCheckbox, Converter={StaticResource InvertBooleanConverter}}" >
     <TextBox.InputBindings>
           <KeyBinding Key="Enter" Command="{Binding CmdEnterPressed}"/>
     </TextBox.InputBindings>
</TextBox >

现在在任何情况下,尽管我按下TextBox.AcceptsReturn[Return]设置为True,但KeyBinding正在触发,我想不要触发它,而是转到下一行TB。

2 个答案:

答案 0 :(得分:1)

您可以为此命令实现CanExecute,如下所示:

public bool CanExecute(object parameter)
{
    bool acceptReturns = (bool)parameter;
    return !acceptReturns;
}

在你的XAML中(至于CommandParameter用于Execute和CanExecute方法):

<KeyBinding Key="Enter" Command="{Binding CmdEnterPressed}" 
                        CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type TextBox}}, Path=AcceptsReturn}"/>

答案 1 :(得分:0)

遇到同样的问题,建议的解决方案无法解决问题。以下是我如何解决这个问题。

  • 保留第一个带有键绑定的文本框,并创建一个几乎完全复制的减去键绑定并将AcceptReturn设置为true
  • 设置/附加两者的可见性(第二个反向)到Checkbox isChecked属性
  • 将文本绑定到同一属性

                       

应该有更好的解决办法,但这对我来说是