WPF / Catel:输入Shift +字符时,TextBox不会触发TextChanged事件

时间:2013-09-23 15:21:22

标签: wpf mvvm catel

我得到了以下XAML:

<TextBox TextWrapping="Wrap"
      Width="300"
          Text="{Binding SearchText, Mode=TwoWay,
                    UpdateSurceTrigger=PropertyChanged}"
          VerticalContentAlignment="Center"  
          ToolTip="Suchbegriff eingeben.">
     <i:Interaction.Triggers>
         <i:EventTrigger EventName="TextChanged">
              <catel:EventToCommand Command="{Binding SearchTxt_TextChangedCmd}" 
                               DisableAssociatedObjectOnCannotExecute="False"/>
         </i:EventTrigger>    
     </i:Interaction.Triggers>
 </TextBox>

这是一个绑定到mvvm中字符串的文本框。 问题是,当我在第一个字母按“shift + a character”时,事件不会被触发。 当我按下大写锁定+任何角色时,该事件将像往常一样被解雇。 当我按下键盘上的任何字符时,它也可以工作。

有人可以帮我吗?

提前,

编辑:Geert建议后的解决方案:

在view.xaml:

<TextBox Height="31" 
         HorizontalAlignment="Right" 
         Margin="0,59,20,0" 
         Name="textBox2" 
         VerticalAlignment="Top" 
         Width="282"
         Text="{Binding BehaviorText, Mode=TwoWay}">
    <i:Interaction.Behaviors>
        <catel:UpdateBindingOnTextChanged UpdateDelay="200" />
    </i:Interaction.Behaviors>
</TextBox>

在ViewModel中(使用Catel):

public String BehaviorText
{
    get { return GetValue<String>(BehaviorTextProperty); }
    set { SetValue(BehaviorTextProperty, value); }
}


public static readonly PropertyData BehaviorTextProperty =
    RegisterProperty("BehaviorText", typeof(String), null, (sender, e) => ((MainWindowViewModel)sender).OnUpdateBindingOnTextChanged());

private void OnUpdateBindingOnTextChanged()
{
    Console.WriteLine(BehaviorText);
}

1 个答案:

答案 0 :(得分:0)

请改用UpdateBindingOnTextChanged行为。如果这不符合您的需求,请创建一个repro并将其上传到https://catelproject.atlassian.net