我正在引用一些查询设备连接的示例代码,并返回有关设备当前如何连接到网络的数据。我需要在几页的OnNavigatedTo
事件中确定设备的当前连接模式。我无法获取ViewModel
,它会在导航到页面时抓取要刷新的数据。
MainPage.xaml.cs中
public MainPage()
{
InitializeComponent();
//DataContext = App.DeviceInformationViewModel.InformationProvider;
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
DataContext = null;
DataContext = App.DeviceInformationViewModel.InformationProvider;
}
App.xaml.cs
private static DeviceInformationViewModel deviceInformationViewModel = null;
public static DeviceInformationViewModel DeviceInformationViewModel
{
get
{
// Delay creation of the view model until necessary
if (deviceInformationViewModel == null)
deviceInformationViewModel = new DeviceInformationViewModel();
return deviceInformationViewModel;
}
}
DeviceInformationViewModel.cs
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;
}
}
IInformationProvider继续提供可以检索设备网络信息的接口。如果需要,我也可以添加这些类,它们非常短。您如何建议我更新我的解决方案,以便每次将MainPage导航到ViewModel时都可以刷新,我可以使用正确的信息更新我的视图?
答案 0 :(得分:3)
强制绑定以检查更新值的典型方法是引发属性更改通知:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
App.DeviceInformationViewModel.RefreshProperty("InformationProvider");
}
假设您已在INotifyPropertyChanged
中实施DeviceInformationViewModel
,则可以在该VM中添加此方法:
public void RefreshProperty(string propertyName)
{
NotifyPropertyChanged(propertyName);
}
通过提高InformationProvider
属性的属性更改通知,将通知绑定到该属性的所有视图以刷新显示的值。