随笔 - 19  文章 - 0  评论 - 6  阅读 - 19903

x:Name与Name区别

x:Name与Name有两个不同点:

1、x:Name是Xaml的标记特性,任何在Xaml中定义的元素,都可以使用x:Name来为元素指定名称。

Name是FrameworkElement定义的依赖项属性(String类型),只有FrameworkElement的派生类才可以使用Name。

例如,Ellipse的Fill属性的类型是Brush,Brush不是FrameworkElement的子类,它没有Name属性。

因此,在Xaml中,为Brush指定名称时,只能使用x:Name标记特性:

  1. <!--Xaml code-->  
  2.   
  3. <Ellipse>  
  4.    <Ellipse.Fill>  
  5.        <SolidColorBrush x:Name="aliceBlue" Color="AliceBlue"/>  
  6.        <!--注销上面一行的代码,使用下面一行的代码无法通过编译-->  
  7.        <!--<SolidColorBrush Name="aliceBlue" Color="AliceBlue"/>-->  
  8.    </Ellipse.Fill>  
  9. </Ellipse>  

2、在FrameworkElement的定义中,添加了System.Windows.Markup.RuntimeNamePropertyAttribute特性:

该特性的作用是,当在Xaml中,使用x:Name后,该值将被自动赋给FrameworkElement的Name属性。

 

可以使用RuntimeNamePropertyAttribut,为自己定义的类添加名称特性:

[RuntimeNamePropertyAttribute("N1")] 

[RuntimeNamePropertyAttribute("N2")] 
public class Person : UIElement 

    public String N1 { get; set; } 
    public String N2 { get; set; } 
}

  1.     <StackPanel>  
  2.         <wp:Person x:Name="WebAttack"/>  
  3.         <TextBlock>Name:</TextBlock>  
  4.         <TextBlock Text="{Binding ElementName=WebAttack, Path=N1}"/>  
  5.         <TextBlock>Nickname:</TextBlock>  
  6.         <TextBlock Text="{Binding ElementName=WebAttack, Path=N2}"/>  
  7.     </StackPanel>  
posted on   杨-C#  阅读(2308)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示