没有XAML的Silverlight - 图像不会渲染

时间:2010-06-30 04:05:28

标签: silverlight xaml

我有一个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文件被修改为在Xaml中定义RootVisual,则以下工作:

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)) });
}

我不明白为什么一个会工作而另一个不会。我也有使用UserControl的相同行为(当然使用Content而不是Childern。)

据我所知,应该没有XAML要求。有什么我想念的吗?

1 个答案:

答案 0 :(得分:0)

区别在于您将RootVisual设置为Grid的第一种情况,但在第二种情况下,您的网格是子元素。

RootVisual属性的MSDN页面上,它显示以下示例:

this.RootVisual = new Page();

因此,如果您创建Page,然后将Grid添加到该页面,那么它应该有用。

Page page = new Page();
page.Content = g;
this.RootVisual = page;