将数据从viewmodel传递给windowsphone背后的代码



我试图在我的第一个(非常简单的)WP7应用程序上使用MVVM模式,但我被严重卡住了,现在我只是试着让它工作,而不关心MVVM。

我的MainPage有一个MainViewModel,它运行良好。我有一个按钮,可以传递一些数据并导航到"详细信息页面"。我设置了一个导航服务来导航到详细信息页面并传递参数,这很好。我就是无法将数据绑定到视图。由于这是一个简单的应用程序,我决定将数据从DetailsPageVieModel.cs传递到DetailsPage.xaml.cs代码后面,并在那里完成工作。下面是面纱模型部分的样子。

public override void Initialize(IDictionary<string, string> parameters)
{
DetailsPage dp = new DetailsPage();
//DetailsPage dp = Application.Current.RootVisual as DetailsPage;
base.Initialize(parameters);
parameters.TryGetValue("url", out vidUrl);
dp.LoadVideoData(vidUrl);
}

在我的DetailsPage.xaml.cs中,我有以下内容:

public void LoadVideoData(string url)
{
HtmlWeb doc = new HtmlWeb();
doc.LoadAsync("http://mydomain.com/video.php?url=" + url);
doc.LoadCompleted += doc_LoadCompleted;
}
private void doc_LoadCompleted(object sender, HtmlDocumentLoadCompleted e)
{
this.vidTitle.Text = e.Document.GetElementbyId("title").InnerText;
vidId = e.Document.GetElementbyId("youtubeId").InnerText;
this.vidUrl.Source = new Uri("http://mydomain.com/video.php?url=" + vidUrl, UriKind.Absolute);
BitmapImage bi = new BitmapImage();
using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
{
using (IsolatedStorageFileStream fileStream = myIsolatedStorage.OpenFile("temp.jpg", FileMode.Open, FileAccess.Read))
{
bi.SetSource(fileStream);
this.vidImg.Height = bi.PixelHeight;
this.vidImg.Width = bi.PixelWidth;
}
}
this.vidImg.Source = bi;
}

这是相关的DetailsPage.xaml代码

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<StackPanel>
<TextBlock x:Name="vidTitle" Canvas.ZIndex="99" />
<TextBlock Canvas.ZIndex="99" Text="Tap on the image to view the video." FontSize="14" Margin="0"/>
<Button Margin="0 -50" Padding="0" BorderThickness="0">
<Image x:Name="vidImg" Height="225" />
</Button>
<StackPanel Canvas.ZIndex="99" Height="516">
<phone:WebBrowser x:Name="vidUrl" IsScriptEnabled="True" Height="516" Margin="0"/>
</StackPanel>
</StackPanel>
</Grid>

我猜问题出在以下上

DetailsPage dp = new DetailsPage();
//DetailsPage dp = Application.Current.RootVisual as DetailsPage;

这两行代码都不起作用。第一行执行正常,但页面没有用正确的数据更新。当它到达dp时,第二行给了我一个运行时错误消息。加载视频数据(vidUrl);线

这是我的第一个Windows Phone应用程序,我非常感谢任何人能提供的帮助。

Kamal

在深入研究之后,我找到了以下解决方案。

DetailsPage currentPage = (App.Current as App).RootFrame.Content as DetailsPage;

我把这段代码放在DetailsPageViewModel.cs中。但对于像我这样的新手来说,文件名并没有什么特别之处。它很可能是Monkey.cs。上面的代码只允许您访问当前显示页面的代码。

相关内容

  • 没有找到相关文章

最新更新