¿Cómo puedo cambiar VisualState en una vista desde ViewModel?

Soy nuevo en WPF y MVVM. Creo que esta es una pregunta simple. Mi ViewModel está realizando una llamada asíncrona para obtener datos para un DataGrid que está vinculado a una ObservableCollection en ViewModel. Cuando se cargan los datos, configuro la propiedad ViewModel adecuada y DataGrid muestra los datos sin ningún problema. Sin embargo, quiero introducir una señal visual para el usuario de que los datos se están cargando. Entonces, usando Blend, agregué esto a mi marcado:

        <VisualStateManager.VisualStateGroups>
        <VisualStateGroup x:Name="LoadingStateGroup">
            <VisualState x:Name="HistoryLoading">
                <Storyboard>
                    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="HistoryGrid">
                        <DiscreteObjectKeyFrame KeyTime="0" Value="{x:Static Visibility.Hidden}"/>
                    </ObjectAnimationUsingKeyFrames>
                </Storyboard>
            </VisualState>
            <VisualState x:Name="HistoryLoaded">
                <Storyboard>
                    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="WorkingStackPanel">
                        <DiscreteObjectKeyFrame KeyTime="0" Value="{x:Static Visibility.Hidden}"/>
                    </ObjectAnimationUsingKeyFrames>
                </Storyboard>
            </VisualState>
        </VisualStateGroup>
    </VisualStateManager.VisualStateGroups>

I pensar Sé cómo cambiar el estado en mi código subyacente (algo similar a esto):

VisualStateManager.GoToElementState(LayoutRoot, "HistoryLoaded", true);

Sin embargo, el lugar donde quiero hacer esto es en el método de finalización de E / S de mi ViewModel que no tiene una referencia a su Vista correspondiente. ¿Cómo lograría esto usando el patrón MVVM?

Respuestas a la pregunta(3)

Su respuesta a la pregunta