2010-06-30 48 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;