程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> WPF Bug清單之(4)——點擊RadioButton的空白沒有反應

WPF Bug清單之(4)——點擊RadioButton的空白沒有反應

編輯:關於.NET

在WPF BUG清單之二,介紹過RadioButton在綁定上的一個Bug。現在再來介紹它的另一個造成RadioButton的點擊事件處理不正確的BUG。現象是:點在RadioButton的范圍內,可這個RadioButton就是選不中。

先來看一個例子。Windows裡一個常見的對話框,用了多個RadioButton。如下圖所示。

圖1.RadioButton使用范例

把RadioButton放在GroupBox的Header上,是很常見的一個用例,而且被微軟的UX Guide所認可。

大家可以在自己的電腦上點點這些RadioButton,只要點在圓圈或文字范圍內,就會被選中。

我們現在用WPF來實現這個效果。實現的方式有很多。

1.直接在Header裡放一個RadioButton。簡單,不可復用。

2.使用HeaderTemplate,裡面放個RadioButton。比上面的復雜些,結果一樣。

3.使用ControlTemplate,還是裡面放個RadioButton。復用性好些。

簡單起見,我們用第一種方式來演示這個Bug。

Sample code

<StackPanel Margin="12">
<TextBlock Margin="0,0,0,5" TextWrapping="Wrap">
<Run FontWeight="Bold">Bug Description:</Run>
<Run>略</Run>
</TextBlock>
<GroupBox Padding="9" >
<GroupBox.Header>
<RadioButton Content="Header RadioButton" GroupName="header"/>
</GroupBox.Header>
<GroupBox.Content>
<StackPanel>
<RadioButton Content="Common RadioButton"/>
<RadioButton Content="Common RadioButton"/>
</StackPanel>
</GroupBox.Content>
</GroupBox>
<GroupBox Padding="9" >
<GroupBox.Header>
<RadioButton Content="Header RadioButton" GroupName="header"/>
</GroupBox.Header>
<GroupBox.Content>
<StackPanel>
<RadioButton Content="Common RadioButton"/>
<RadioButton Content="Common RadioButton"/>
</StackPanel>
</GroupBox.Content>
</GroupBox>
</StackPanel>

運行的效果如下圖。

圖2.RadioButton點擊Bug示例

PS:本來想做個XBAP程序放上來讓大家直接點點。結果沒找著上傳.exe的地方。

這個BUG的根源應該是由於顏色造成的。可以發現鼠標在Header RadioButton上移動時,只有鼠標處在有顏色區域的上方時,RadioButton才認為自己是MouseOver。但是特意給RadioButton的Header設置了Background之後,問題依舊。

這個問題讓我們的QA和Developer同時抓狂不已。作為高品質的軟件,這種看上去的小問題也是不可容忍的。解決方式是有的,但是丑惡得不敢拿出來給大家看。還是等神人出場或是.NET Framework 4.0吧。

-----------------------------------------總結的分割線---------------------------------------

RadioButton目前已有兩個BUG入帳,榮登WPF BUG榜第一。但是RadioButton同學也不要高興得太早,我們的BUG主力ListBox以其義兄ListView還沒發威呢。Button同學就放棄吧,作為最簡單的控件之一,也得給我們點兒信心啊。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved