gpt4 book ai didi

silverlight - x :name and name for controls in xaml file? 有什么区别吗

转载 作者:行者123 更新时间:2023-12-02 21:51:22 27 4
gpt4 key购买 nike

我是 Silverlight 新手。
当我使用 Visual Studio 将一些控件添加到我的 xaml 文件时,它使用 Name 属性设置控件名称,但也有 x:Name。
它们有什么区别以及何时使用它们?
谢谢。

最佳答案

简介

是的,有区别。最重要的是,x:Name 可以用在没有自己的 Name 属性的对象元素上。

更长的解释

您只能在代表实际具有 Name 属性的对象的元素上使用 Name。例如,从 FrameworkElement 派生的任何内容。

x:Name 属性可以放置在表示对象的任何元素上,无论该对象实际上是否具有 Name 属性。如果对象确实具有 Name 属性,则 x:Name 的值将分配给它,因此您不能同时拥有 x:Name > 和 Name 在同一元素上。

当对象具有 Name 属性或 x:Name 属性时,该属性的值与对象树中的对象条目关联。 FrameworkElementFindName 方法可以通过对象树查找对象。 FindName 可以按名称查找对象,即使该对象不带有自己的 Name 属性,因为它使用对象树中记录的名称。

UserControl 自动生成的代码将包含具有 Namex:Name 属性的任何元素的字段定义。生成的 InitialiseComponent 方法将使用 FindName 方法为这些字段分配值。

示例

上面的 Xaml 创建了两个 Grid 类型的 LayoutRootSolidColorBrush 类型的 MyBrush。如果您将 x:Name="LayoutRoot" 更改为 Name="LayoutRoot" 则不会发生任何变化。 Grid 有一个 Name 属性。不过,请尝试将 x:Name="MyBrush" 更改为 Name="MyBrush"。这不起作用,因为 SolidColorBrush 没有 name 属性。使用上面的 Xaml,您可以执行如下代码:-

    public MainPage()
{
InitializeComponent();
MyBrush.Color = Colors.LightGray;
}

打开InitializeComponent的定义并查看自动生成的代码。

关于silverlight - x :name and name for controls in xaml file? 有什么区别吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3379230/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com