我得到了以下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);
}
答案 0 :(得分:0)
请改用UpdateBindingOnTextChanged行为。如果这不符合您的需求,请创建一个repro并将其上传到https://catelproject.atlassian.net