当文本框获得焦点或失去焦点时,我的ViewModel中的方法MyMethod总是被调用。但是如果我现在用Keyboard.ClearFocus()删除焦点,那么方法MyMethod不会被调用。是否有更好的方法来解决这个问题,或者我做错了什么?
查看:
<TextBox x:Name="MyTextBox" HorizontalAlignment="Left" Margin="35,237,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Text="{Binding MyTextBoxText}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="LostFocus">
<prism:InvokeCommandAction Command="{Binding MyCommand}">
<prism:InvokeCommandAction.CommandParameter>
<MultiBinding Converter="{StaticResource multiParameterConverter}">
<Binding Path="Name" ElementName="MyTextBox"/>
<Binding Path="IsFocused" ElementName="MyTextBox"/>
</MultiBinding>
</prism:InvokeCommandAction.CommandParameter>
</prism:InvokeCommandAction>
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBox>
视图模型:
public DelegateCommand<object> MyCommand=>
_myCommand ??= new DelegateCommand<object>(MyMethod);
private void MyMethod(object myObject)
{
//Do something
}
代码隐藏:
private void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
Keyboard.ClearFocus();
}
1条答案
按热度按时间umuewwlo1#
我认为你混淆了“焦点”和“键盘焦点”。
Keyboard.ClearFocus()
清除了键盘焦点,而不是“焦点”。因此,要调用命令也为“键盘焦点”哟可以订阅:请注意,如果您还保留
LostFocus
,则该命令可能会被调用多次。