WPF,关于模板的一个问题
本帖最后由 u011227943 于 2013-06-29 08:41:48 编辑
一个圆形Button的模板:
<ControlTemplate TargetType="{x:Type Button}">
<Grid>
<Ellipse Name="outercircle">
......
......
<Ellipse RenderTransformOrigin="0.5,0.5">
......
......
</Grid>
</ControlTemplate>
我想问的是,既然,Button模板是Grid里面放两个圆,那Grid也应该是Button的一部分吧。
那点击圆形周围与Grid之间的空隙,也就是四个角的位置,为什么Button没有反应呢?难道
四个角不属于Button的一部分吗?
------解决方案--------------------Grid响应点击么?
------解决方案--------------------我没有测试Grid。
我猜,如果你诚心想让Grid响应点击,那么你需要将Grid的背景色设置上(而不能是null),并且把不透明度设置为大于0.0的值,才能点击。
------解决方案--------------------这跟透明不透明没关系。只要你的控件的Background不是null就可以响应的。
只要Grid背景不为null,即使透明度设成0(完全透明),也是可以点击的。
原因是:
控件的Hit-testing需要其background不为null.
------解决方案--------------------
这里简单的说就是判断鼠标点击了哪个区域。
更多的请参考:
http://en.wikipedia.org/wiki/Hit-testing
http://msdn.microsoft.com/en-us/library/ms752097.aspx
------解决方案--------------------
这跟透明不透明没关系。只要你的控件的Background不是null就可以响应的。
只要Grid背景不为null,即使透明度设成0(完全透明),也是可以点击的。
原因是:
控件的Hit-testing需要其background不为null.
请问,Hit-testing是什么意思?
就是检查鼠标是否点击到一个控件的区域内.
------解决方案--------------------