1

我开始在我当前的项目中应用 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.
    }

我对发生的事情感到非常困惑。谁能详细解释一下?

4

0 回答 0