为什么Grid.Row附加属性指定没有任何封闭的网格?

时间:2014-04-30 10:54:44

标签: wpf attached-properties

我正在阅读WPF project的代码,其中包含以下XAML代码(我省略了样板部件):

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

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

  1. Grid.Row="1"定义中Canvas的目的是什么?
  2. x:Name="window"的目的是什么?我没有在代码隐藏中看到引用window的任何内容。 (但有Window1的引用。)

1 个答案:

答案 0 :(得分:2)

问题1

在您的示例中,Grid.Row完全没有任何意义。您为其指定了一个值,但由于Grid周围没有Canvas,因此不会使用该值。它也不会给出错误,因为它是有效的属性/值。 RowPropertyCanvas类中定义。

问题2

它为UI元素提供了一个唯一的名称(在窗口内)。目前,它没有任何意义。所以你可以安全地删除它。但是,如果要在视图的代码隐藏中访问窗口,x:name有用。但您也可以通过this关键字访问该窗口。