¿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?