1

基本上我有一个文本框,当未选中复选框并且选中复选框时,我希望文本框对我写的 KeyBinding 做出反应。

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

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

4

2 回答 2

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}"/>
于 2013-09-03T13:34:13.060 回答
0

有同样的问题,建议的解决方案没有解决它。这是我解决它的方法。

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

应该有更好的解决方法,但这对我有用

于 2014-03-15T18:25:03.050 回答