为什么在没有任何封闭网格的情况下指定了Grid.Row附加属性



我正在从一个WPF项目中读取代码,该项目具有以下XAML代码(我省略了样板部分(:

<Window x:Class="AdornedControlSample.Window1"
    ...
    x:Name="window"
    ...
    >
    <Canvas
        Grid.Row="1"
        x:Name="canvas"
        >
    ...

请注意,此XAML文件中的任何位置都没有定义任何Grid。所以,我的问题是:

  1. Canvas定义中Grid.Row="1"的用途是什么
  2. x:Name="window"的作用是什么?我在后面的代码中没有看到任何引用window的内容。(不过也有对Window1的引用。(

问题1

在您的示例中,Grid.Row根本没有任何用途。您给了它一个值,但不会使用该值,因为Canvas周围没有Grid。它也不会给出错误,因为它是一个有效的属性/值。RowProperty是在Canvas类中定义的。

问题2

它为UI元素提供了一个唯一的名称(在窗口本身内(。目前,它没有任何目的。这样你就可以安全地取下它。但是,如果您想访问视图代码背后的窗口,x:name是有作用的。但是您也可以通过this关键字访问该窗口。

最新更新