我有一个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要求。有什么我想念的吗?
答案 0 :(得分:0)
区别在于您将RootVisual
设置为Grid
的第一种情况,但在第二种情况下,您的网格是子元素。
在RootVisual属性的MSDN页面上,它显示以下示例:
this.RootVisual = new Page();
因此,如果您创建Page
,然后将Grid
添加到该页面,那么它应该有用。
Page page = new Page();
page.Content = g;
this.RootVisual = page;