Сбой EventToCommand для начального события GotFocus - PullRequest
1 голос
/ 09 ноября 2011

Я начинаю применять шаблон проектирования 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>

Я хочу выполнить TestCommand в модели представления всякий раз, когда запускается «GotFocus».Но проблема в том, что «TestCommand» не выполняется для начального «GotFocus» (т. Е. При загрузке окна).Я отладил и обнаружил, что событие «GotFocus» действительно было запущено, но триггер не был вызван по неизвестной причине.Затем я установил фокус в обработчике событий «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.Activation», все в порядке.

    protected void WindowActivated(object sender, EventArgs e)
    {
        FocusManager.SetFocusedElement(this, TextBox1); // The focus is moved to TextBox1 and the command is executed.
    }

Я очень смущен тем, что случилось.Может ли кто-нибудь объяснить это подробно?

...