我开始在我当前的项目中应用 Mvvm 设计模式,我使用的框架是 Mvvm Light 工具包。现在我在使用 EventToCommand 处理“GotFocus”事件时遇到了一个问题。xaml 文件类似于:
<TextBox x:Name="TextBox1">
<i:Interaction.Triggers>
<i:EventTrigger EventName="GotFocus">
<cmd:EventToCommand Command="{Binding TestCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBox>
每当触发“GotFocus”时,我都想在视图模型中执行 TestCommand。但问题是初始“GotFocus”(即加载窗口时)没有执行“TestCommand”。我已调试并发现“GotFocus”事件实际上已被触发,但由于未知原因未调用 Trigger。然后我在“Window.Loaded”事件处理程序中设置焦点,它仍然失败。
protected void WindowLoaded(object sender, RoutedEventArgs e)
{
FocusManager.SetFocusedElement(this, TextBox1); // The focus is moved to TextBox1 but the associated command is not executed.
}
但是如果我在“Window.Activated”事件处理程序中设置焦点,就可以了。
protected void WindowActivated(object sender, EventArgs e)
{
FocusManager.SetFocusedElement(this, TextBox1); // The focus is moved to TextBox1 and the command is executed.
}
我对发生的事情感到非常困惑。谁能详细解释一下?