如何刷新ViewModel以更新View

时间:2012-10-18 03:34:59

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

我在MainPage中实现了一个刷新应用程序栏按钮,我想使用此按钮的click事件重新加载视图模型。但是,我不知道如何实现这一目标。首次加载视图时,将在xaml中调用视图模型,如下所示:

DataContext="{Binding InformationProvider, Source={StaticResource DeviceInformationViewModel}}"

我的视图模型是

public class DeviceInformationViewModel
{
    private static IInformationProvider informationProvider;

    /// <summary>
    /// Returns the device information to display.
    /// </summary>
    public IInformationProvider InformationProvider
    {
        get
        {
            if (informationProvider == null)
            {
                if (DesignerProperties.IsInDesignTool)
                {
                    informationProvider = new FakeInformation();
                }
                else
                {
                    informationProvider = new RealInformation();
                }
            }

            return informationProvider;
        }
    }
}

InformationProvider基本上只是从模型中获取设备信息。加载应用程序时会执行一次,但我也想在刷新按钮单击事件上执行此操作。我怎么能在我的MainPage背后的代码中完成这个?另外,这是正确的方法吗?如果没有,我将如何完成此解决方案?

1 个答案:

答案 0 :(得分:2)

除非知道这样做,否则对视图模型的绑定不会更新。这样做的典型方法是在视图模型上实现INotifyPropertyChanged,然后在视图模型上的属性发生更改时调用NotifyPropertyChanged。在您的情况下,您可以简单地实现INotifyPropertyChanged,然后为刷新按钮中的每个属性调用NotifyPropertyChanged方法。