2010-06-30 28 views
2

我有一个Silverlight应用程序,我没有使用XAML。我在Application_Startup中有以下代码的基本应用程序:没有XAML的Silverlight - 图像不会渲染

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的要求。有什么我失踪?

回答

0

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

在为RootVisual属性MSDN页面则显示下面的例子:如果你创建一个Page,然后添加你的Grid该网页时,应该工作

this.RootVisual = new Page(); 

左右。

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