Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 带有AcceptsReturn=true的文本框键绑定_C#_.net_Wpf_Textbox - Fatal编程技术网

C# 带有AcceptsReturn=true的文本框键绑定

C# 带有AcceptsReturn=true的文本框键绑定,c#,.net,wpf,textbox,C#,.net,Wpf,Textbox,基本上,我有一个文本框,当复选框被取消选中时,它将接受return,当它被选中时,我希望文本框对我编写的键绑定做出反应 <TextBox AcceptsReturn="{Binding IsChecked, ElementName=EnterCheckbox, Converter={StaticResource InvertBooleanConverter}}" > <TextBox.InputBindings> <KeyBindin

基本上,我有一个文本框,当复选框被取消选中时,它将接受return,当它被选中时,我希望文本框对我编写的键绑定做出反应

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


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

您可以对该命令执行如下操作:

public bool CanExecute(object parameter)
{
    bool acceptReturns = (bool)parameter;
    return !acceptReturns;
}
在XAML中(只要CommandParameter用于Execute和CanExecute方法):


您可以像这样为该命令实现CanExecute:

public bool CanExecute(object parameter)
{
    bool acceptReturns = (bool)parameter;
    return !acceptReturns;
}
在XAML中(只要CommandParameter用于Execute和CanExecute方法):


有相同的问题,建议的解决方案无法解决。下面是我如何解决这个问题的

  • 保持第一个文本框的keybinding不变,创建一个几乎完全相同的副本,减去keybinding,并将AcceptReturn设置为true
  • 将两者的可见性(倒数第二个)设置/附加到复选框isChecked属性
  • 将文本绑定到同一属性


应该有一个更好的解决方案,但这确实解决了我的问题。

有同样的问题,建议的解决方案没有解决它。下面是我如何解决这个问题的

  • 保持第一个文本框的keybinding不变,创建一个几乎完全相同的副本,减去keybinding,并将AcceptReturn设置为true
  • 将两者的可见性(倒数第二个)设置/附加到复选框isChecked属性
  • 将文本绑定到同一属性


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

我试过了,但没用。即使CanExecute返回False,它也始终执行命令机制,而不是AcceptsReturn。现在我正试图用交互性dll来实现这一点。也许它会起作用:)我试过了,但没用。即使CanExecute返回False,它也始终执行命令机制,而不是AcceptsReturn。现在我正试图用交互性dll来实现这一点。也许它会起作用:)