我正在UWP中开发一个客户端 - 服务器应用程序,其作用类似于网络对讲,基于Raspberry Pi(Windows IoT)。用户单击按钮连接到RPi,客户端获取通知并显示通知页面。如果用户应答呼叫,则导航到具有媒体元素的另一个页面,该源是由服务器创建的网络媒体接收器。这是传入呼叫页面代码,负责导航:
private void answerCall_Click(object sender, RoutedEventArgs e)
{
speaker.Stop();
speaker.Dispose();
Frame.Navigate(typeof(MainPage), true);
}
这是代码在页面上的代码,其中media元素负责处理OnNavigatedTo事件(ViewModel类在页面的静态资源中声明):
protected override void OnNavigatedTo(NavigationEventArgs e)
{
bool properValue = bool.TryParse(e.Parameter.ToString(), out bool isCalling);
if (!properValue)
return;
if (isCalling)
{
MainPageViewModel viewModel = (MainPageViewModel)Resources["mainPageViewModel"];
viewModel.VideoURL = new Uri(@"stsp://" + SettingsManager.Instance.Values["ServerIP"].ToString());
viewModel.OnPropertyChanged("VideoURL");
}
}
问题是设置VideoURL并触发OnPropertyChanged的部分不起作用。媒体元素源仍为空,并且不显示任何内容。
我的问题是:有没有办法在OnNavigatedTo事件处理程序中提交页面的ViewModel属性中的更改?