我正在阅读2008年10月发布的Silverlight 2 Unleashed,其中有一个带有root canvas标签的示例:
<Canvas xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Background="Red"
Width="500"
Height="300">
<Ellipse Width="400"...
Run Code Online (Sandbox Code Playgroud)
但是,当我在VS2008中创建一个新的Silverlight应用程序时,我得到一个UserControl根标记:
<UserControl x:Class="TestFirst.Page"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="400" Height="300">
<Grid x:Name="LayoutRoot" Background="White"...
Run Code Online (Sandbox Code Playgroud)
当然我可以通过用Canvas替换root标签来改变这一点,但是我还必须更改后面的代码以继承Canvas而不是UserControl,并且必须取出InitializeComponent方法.
脱离上下文,使用 Canvas 作为 XAML 文档中的根可能看起来很奇怪。然而,在本书中,当我们在名为 SilverlightPad 的在线工具中演示第一个 XAML 示例时,就会使用此方法。在这种情况下,没有代码隐藏,只有 XAML,因此您不需要更改类文件中的任何内容(因为没有)。
要点是,任何 XAML 元素都可以用作 XAML 文档的根。Visual Studio 通过创建 UserControl XAML 根并将其链接到代码隐藏中的 UserControl 类来执行的操作实际上是更通用方案的特殊情况。我同意这是读者大多数时候会遇到的问题,但我也相信表明事情可以有所不同的价值。此外,还必须表明,有时,没有 Code-Behind,即使没有 Code-Behind 类的“帮助”,XAML 也是一种具有多种功能的语言。
Silverlight 2 Unleashed 使用几乎从零开始的进度,并且具有(相当陡峭的)学习曲线。如果你继续阅读,你会发现我们在本书稍后开始使用 Visual Studio,事情会变得更加熟悉。然而,你会发现你可以使用其他元素作为根,我认为这具有教育价值。
如果您有任何其他问题,请随时在这里发帖或给我发电子邮件。
干杯,劳伦特