Я нахожусь в процессе удаления XAML из моего проекта Silverlight и заставляю его использовать только код (согласно этой статье ).
Вот мое очень простое событие запуска дляприложение 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 newer» (т.е. оно находится рядом с XAP),Вот XAML для MainPage:
<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.
(Примечание: кажется, у этого парня такая же проблема, но никто не ответил на его вопрос.)