我正在从Silverlight项目中删除XAML,并使其仅使用代码(根据
this article
)
这是我为Silverlight应用程序(使用模板项目中的标准app.xaml)执行的非常简单的启动事件:
private void Application_Startup(object sender, StartupEventArgs e)
{
Grid grid = new MainPage();
this.RootVisual = grid;
var mediaElement = new MediaElement();
mediaElement.MediaFailed += (s, ea) => { mediaFailed = true; };
mediaElement.Source = new Uri(@"/Content/Some Music.mp3", UriKind.Relative);
grid.Children.Add(mediaElement);
}
MP3文件设置为“build action:none,copy if new”(即:它在xap旁边)。以下是主页的XAML:
<Grid x:Class="TestGame.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
</Grid>
还有C-这里一点也不奇怪。
public partial class MainPage : Grid
{
public MainPage()
{
InitializeComponent();
}
}
到目前为止一切都是有效的。所以我的问题是:
为什么我换衣服的时候
Grid grid = new MainPage();
到
Grid grid = new Grid();
这个
mediaElement.MediaFailed
调用事件(出现ag-e-u网络错误)?
唯一有趣的是
InitializeComponent
正在做的就是打电话
Application.LoadComponent
(这是默认生成的代码)。那么,这个函数可能正在做什么来允许源URI工作呢?
看来
Application.GetResourceStream
还是可以的。但我需要能够从Xap外部获得一些资源。
(注:似乎
this guy
也有同样的问题,但没有人回答他的问题。)