在Wpf应用程序中区分x:Name和Name

时间:2013-12-27 09:33:05

标签: c# .net wpf xaml tags

我是Wpf编程的初学者,我需要知道Namex:Name

之间的区别
<label Name="lab" ></label>

<label x:Name="lab" ></label>

上面两行之间有什么区别?在代码背后,我如何区分Namex:Name

1 个答案:

答案 0 :(得分:5)

请参阅this

它们引用相同的东西,但在定义UserControl时必须使用x:前缀。

In WPF, what are the differences between the x:Name and Name attributes?

Is there any difference in x:name and name for controls in xaml file?

来自Microsoft

  

任何WPF应用程序方案都可以避免使用x:Name   属性,因为在。中指定了Name依赖属性   几个重要基类的默认XAML命名空间   因为FrameworkElement和FrameworkContentElement满足了这一点   目的。还有一些常见的XAML和WPF场景代码   访问框架级别没有Name属性的元素是   重要。例如,某些动画和故事板支持   类不支持Name属性,但它们通常需要   在代码中引用以控制动画。你应该   指定x:Name作为时间轴上的属性和变换   如果您打算稍后从代码中引用它们,则在XAML中创建。如果   名称可作为类的属性,名称和x:名称可以   可互换地用作属性,但会产生解析异常   如果两者都在同一元素上指定。如果XAML是标记   编译后,标记编译会发生异常,否则就会发生   在负载时发生。可以使用XAML属性语法设置名称,并在   使用SetValue的代码;但请注意,在中设置Name属性   代码不会在其中创建代表性字段引用   在已加载XAML的大多数情况下,XAML名称范围。   而不是尝试在代码中设置Name,而是使用NameScope方法   代码,针对适当的名称范围。名称也可以使用   带有内部文本的属性元素语法,但这种情况并不常见。在   对比,x:名称不能在XAML属性元素语法中设置,或者在   使用SetValue的代码;它只能使用属性语法设置   对象,因为它是一个指令。