黃偉榮的學習筆記

軟體的世界變化萬千,小小的我只能在這洪流奮發向上以求立足。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Silverlight奇怪的點擊穿透問題。

Posted on 2010-06-09 22:26  黃偉榮  阅读(705)  评论(5编辑  收藏  举报

不知各位有沒有發生,在某一個元件上怎麼點都不會發生滑鼠的事件,如果你仔細看那些元件Background不是沒設定就是設為NULL,在Silverlight中如果元件背景色是NULL,是不會產生滑鼠事件的,如以下列這個例子。

Grid1與Grid3都有設定Background顏色,但Grid2沒有設定Background顏色,當我在Grid1與Grid3點擊都很正常,只是在Grid2上點擊卻出現Grid1的訊息。

(Silverlight實際範例,請各位在各Grid上點擊看看)

 

<!--Grid1-->
<Grid Background="#FFCDCDCD" MouseLeftButtonUp="Grid1_MouseLeftButtonUp">
<TextBlock Text="Grid1" Margin="10,10,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" FontSize="32" />
<Border Margin="100" BorderBrush="Black" BorderThickness="1">
<!--Grid2-->
<Grid MouseLeftButtonUp="Grid2_MouseLeftButtonUp">
<TextBlock Text="Grid2" Margin="10,10,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" FontSize="32" />
<!--Grid3-->
<Grid Margin="100" Background="Red" MouseLeftButtonUp="Grid3_MouseLeftButtonUp">
<TextBlock Text="Grid3" Margin="10,10,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" FontSize="32" />
</Grid>
</Grid>
</Border>
</Grid>
(相關XAML)
 

其實決解這問題很簡單,只要背景不要是Null就好了,null不等於透明喔,設定如下。

<!--在Silverlight中顏色是由四個16進位組成,第一個16進位是不透明度,之後才是RGB-->
<Grid Background="#00FFFFFF"/>
<!--Transparent = #00FFFFFF-->
<Grid Background="Transparent"/>

 
所有的容器型元件,Background預設都是NULL如:
  • Grid
  • Border
  • StackPanel
  • Canvas

如果要在這些元件上面處理滑鼠事件,請注意這個問題。