黃偉榮的學習筆記

軟體的世界變化萬千,小小的我只能在這洪流奮發向上以求立足。
随笔 - 100, 文章 - 0, 评论 - 212, 阅读 - 17万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Silverlight奇怪的點擊穿透問題。

Posted on   黃偉榮  阅读(706)  评论(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

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

 
 
 
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示