2013-09-23 1 views
0

я получил следующий код XAML:WPF/Катель: TextBox не срабатывает TextChanged события, когда Shift + символ вводится

<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» в первой букве, тогда событие не запускается. Когда я нажимаю кнопку блокировки + любой символ, тогда событие будет запущено, как обычно. Он работает, когда я нажимаю любой символ на клавиатуре.

Может ли кто-нибудь мне помочь?

Thx заранее,

Edit: Решение после предложению 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); 
} 

ответ

0

Вместо этого используйте поведение UpdateBindingOnTextChanged. Если это не соответствует вашим потребностям, создайте репродукцию и загрузите ее по адресу https://catelproject.atlassian.net

+0

Привет, Geert, thx для ответа :). Вы имеете в виду воспроизведение = воспроизведение ошибки? Извините за вопрос, потому что мой английский не так уж хорош. Хорошо попробует предложение, а затем загрузите примерный проект, если он не будет работать. –

+0

Привет, это работает, замечательно! ^^ –

+0

Привет, я попробовал свой пользовательский EventoToCommandClass и работает с триггером. Я загружу репродукцию на https://catelproject.atlassian.net –