日期:2014-05-17  浏览次数:21254 次

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.
------解决方案--------------------
引用:
Quote: 引用:

这跟透明不透明没关系。只要你的控件的Background不是null就可以响应的。
只要Grid背景不为null,即使透明度设成0(完全透明),也是可以点击的。
原因是:
控件的Hit-testing需要其background不为null.

请问,Hit-testing是什么意思?


这里简单的说就是判断鼠标点击了哪个区域。
更多的请参考: 
http://en.wikipedia.org/wiki/Hit-testing
http://msdn.microsoft.com/en-us/library/ms752097.aspx
------解决方案--------------------
引用:
Quote: 引用:

这跟透明不透明没关系。只要你的控件的Background不是null就可以响应的。
只要Grid背景不为null,即使透明度设成0(完全透明),也是可以点击的。
原因是:
控件的Hit-testing需要其background不为null.

请问,Hit-testing是什么意思?


就是检查鼠标是否点击到一个控件的区域内.


------解决方案--------------------
引用: