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>