WPF中的一些疑问

WPF中的一些疑问,wpf,Wpf,我对WPF完全陌生。虽然我正在浏览网上的教程和文章,但我有疑问。到目前为止,一些被删除的问题是 什么是路由事件,它在服务器上做什么额外的事情 什么是依赖属性及其好处 依赖项属性与附加属性的区别 为什么第一次冒泡之后会发生隧道效应?这样做的目的是什么 e、 g 它是依赖属性还是附加属性 谢谢 Routed Event是为元素树设计的事件,当Routed Event升高时,它可以向上(冒泡)和向下(隧道)元素树。例如,如果网格中有按钮,则单击按钮,以便路由可以将树提升到网格 Dependency

我对WPF完全陌生。虽然我正在浏览网上的教程和文章,但我有疑问。到目前为止,一些被删除的问题是

  • 什么是路由事件,它在服务器上做什么额外的事情

  • 什么是依赖属性及其好处

  • 依赖项属性与附加属性的区别

  • 为什么第一次冒泡之后会发生隧道效应?这样做的目的是什么

  • e、 g

    
    
    它是依赖属性还是附加属性

    谢谢

  • Routed Event是为元素树设计的事件,当Routed Event升高时,它可以向上(冒泡)和向下(隧道)元素树。例如,如果网格中有按钮,则单击按钮,以便路由可以将树提升到网格
  • Dependency属性是另一种类型的属性,它可以在其值更改时通知,还可以继承和支持多个提供程序
  • 附加属性是另一种形式的依赖属性,可以附加到任何类型的对象。由于我的速度慢,
    TextBlock.FontSize
    是附加属性

    
    

  • 冒泡用于*_更改事件,隧道用于*_更改事件。所以,如果您需要验证和处理某些内容,则必须使用*\u更改事件,如果您通过*\u更改事件进行验证,则可能无法处理(取消)它

  • 在您的示例中是附加属性
  • 1(&4):路由事件在可视树中向上冒泡或向下隧道。如果有人在过程中对事件args设置了“Handled=true”,那么它就不会继续了。关键是,您不知道可视化树中的谁将获得click事件(例如,按钮可能包含一个带有图像和文本块的StackPanel…当单击按钮时,事件可能会转到其中任何一个),但使用Routed event机制,您可以控制谁应该处理事件。约定是隧道事件的名称前缀为Preview(例如PreviewMouseDown是MouseDown冒泡事件的隧道版本)

    2:依赖项属性的问题是,它们实际上没有“有”值-任何点的值“取决于”其他各种因素(例如:任何样式、触发器、默认值等)。当这些因素中有几个因素存在时,有一个优先顺序决定将使用哪个值。。。。这使得更改元素的显示(例如,当鼠标在其上时)变得很容易,然后将其更改回以前的显示(例如,当鼠标不再在其上时)。依赖项属性的值也可以从祖先继承,这对于DataContext之类的东西非常有用。因此,您可以设置元素的DataContext,它的所有子元素都可以访问它

    3:附加属性使子元素能够存储与祖先上的属性关联的值。就像在示例中,您给出的“left”属性属于按钮的父级画布。附加属性意味着多个子元素可以在祖先上为同一属性存储不同的值

    我希望这有帮助…继续挖掘和提问-这是值得你的头周围的东西

    <canvas>
       <button canvas.left=10/> 
    </canvas>