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

Lam*_*fif 3 .net c# tags wpf xaml

我现在在WPF programmation初学者,我需要知道其中的差别之间Namex:Name

<label Name="lab" ></label>
Run Code Online (Sandbox Code Playgroud)

<label x:Name="lab" ></label>
Run Code Online (Sandbox Code Playgroud)

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

小智 5

请看这个:

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

在WPF中,x:Name和Name属性之间有什么区别?

x:xaml文件中控件的名称和名称有什么区别吗?

这来自微软:

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