不知各位有沒有發生,在某一個元件上怎麼點都不會發生滑鼠的事件,如果你仔細看那些元件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
如果要在這些元件上面處理滑鼠事件,請注意這個問題。