Silverlight без XAML - изображения не будут отображаться - PullRequest
2 голосов
/ 30 июня 2010

У меня есть приложение Silverlight, в котором я не использую XAML.У меня есть базовое приложение со следующим кодом в Application_Startup:

private void Application_Startup(object sender, StartupEventArgs e)
{
     Grid g = new Grid();
     g.Children.Add(new Image { Source = new System.Windows.Media.Imaging.BitmapImage(new Uri("http://sstatic.net/so/img/sprites.png", UriKind.Absolute)) });
     this.RootVisual = g;
}

Этот код не будет отображать указанное изображение.Однако, если файл App.Xaml изменяется, чтобы определить RootVisual в Xaml, следующие работы:

xaml:

<Application.RootVisual>
    <Grid>
    </Grid>
</Application.RootVisual>

код:

private void Application_Startup(object sender, StartupEventArgs e)
{
     ((Grid)this.RootVisual).Children.Add(new Image { Source = new System.Windows.Media.Imaging.BitmapImage(new Uri("http://sstatic.net/so/img/sprites.png", UriKind.Absolute)) });
}

Iне понимаю, почему один будет работать, а другой нет.У меня такое же поведение при использовании UserControl (при использовании Content вместо Childern, конечно).

Из того, что я понимаю, не должно быть требований XAML.Я что-то упускаю?

1 Ответ

0 голосов
/ 02 декабря 2010

Разница в том, что в первом случае вы устанавливаете RootVisual равным Grid, но во втором ваша сетка является дочерним элементом.

На странице MSDN для свойства RootVisual показан следующий пример:

this.RootVisual = new Page();

так что если вы создадите Page, а затем добавите Grid на эту страницу, он должен работать.

Page page = new Page();
page.Content = g;
this.RootVisual = page;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...