Wie kann ich das ändern das VisualState in einer Ansicht aus dem ViewModel?

Ich bin neu in WPF und MVVM. Ich denke, das ist eine einfache Frage. Mein ViewModel ist die Durchführung einer asynchron aufrufen, um die Daten bei einem DataGrid, die gebunden ist an eine ObservableCollection im ViewModel. Wenn die Daten geladen sind, habe ich die richtige ViewModel-Eigenschaft und zeigt das DataGrid die Daten mit kein problem. Jedoch möchte ich Euch einen visuellen Hinweis für den Benutzer, dass die Daten laden. Also, mit Mischung, ich habe dies nur Hinzugefügt, um mein markup:

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

Ich denke ich weiß, wie ich den Zustand ändern in meinem code-behind (ähnlich):

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

Jedoch, der Ort, wo ich das tun möchte, ist in der I/O completion " - Methode von meinem ViewModel, die nicht über einen Verweis auf die entsprechende Ansicht. Wie würde ich dies bewerkstelligen mit dem MVVM-Muster?

Schreibe einen Kommentar