viewmodel和视图之间的交互

时间:2014-01-16 01:04:07

标签: c# xaml mvvm windows-phone-8

我使用windows phone应用程序并使用MVVM,在我的viewmodel中,我在那里加载数据代码,加载数据的属性绑定到我的视图(XAML),那么如何获取有关加载和加载数据的信息?因为我需要在我的xaml中添加ProgressIndicator所以我的用户可以知道数据的加载...

如果我没有使用mvvm并将我的所有代码放入mainpage.xaml.cs,那么我只需要将ProgressIndicator直接放入我的加载代码中就像这样

  

SystemTray.ProgressIndicator.IsIndeterminate = true;

     

SystemTray.ProgressIndicator.IsVisible = true;

     

(..我的逻辑代码..)

     

SystemTray.ProgressIndicator.IsIndeterminate = false

     

SystemTray.ProgressIndicator.IsVisible = false;

如果它在mvvm中那么我该怎么做?

1 个答案:

答案 0 :(得分:2)

通常,MVM模式中的ViewModel和View之间的交互通过数据绑定发生,并且在某些特殊情况下通过使用Messanger模式的消息发生。使用数据绑定可以在一般场景中适应这种情况。在viewmodel中创建属性以指示正在进行的工作区,例如IsBusy。将ProgressIndicator IsIndeterminateIsVisible属性绑定到IsBusy

<shell:SystemTray.ProgressIndicator>
    <shell:ProgressIndicator IsIndeterminate="{Binding IsBusy}" 
                             IsVisible="{Binding IsBusy}" 
                             Text="{Binding Message}" />
</shell:SystemTray.ProgressIndicator>

使用数据绑定,viewmodel中的代码结构可以简单如下:

IsBusy = true;

await MyFunction();

IsBusy = true;

....
private async void MyFunction()
{
    (..my logic code..)
}

检查此SO answer以获取进一步的参考。