【发布时间】:2010-09-23 20:51:40
【问题描述】:
我正在从我的 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 文件设置为“构建操作:无,如果更新则复制”(即:它位于 XAP 旁边)。这是 MainPage 的 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_NETWORK_ERROR)?
InitializeComponent 唯一有趣的事情是调用Application.LoadComponent(这是默认生成的代码)。那么该函数可能在做什么以允许源 URI 工作?
似乎Application.GetResourceStream 仍然可以正常工作。但我需要能够获得 XAP 外部的一些资源。
(注意:this guy 似乎遇到了同样的问题 - 但没有人回答他的问题。)
【问题讨论】:
-
我无法重现此问题,相对于包含 Xap 的“ClientBin”文件夹的“Content”文件夹在哪里?是孩子还是兄弟姐妹?
-
@Anthony:我没有 ClientBin 文件夹——它是一个从文件系统运行的独立项目。 Content 文件夹是 XAP 的同级文件夹。
标签: silverlight xaml