首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

WPF Bug 系列 (1):ListBox SelectionMode=Single 卻能多選相同字串項目

     編輯:關於.NET

Bug 重現

ListBox 設 SelectionMode="Single",直接加入三個相同字串 "A string value"。**運行時可同時選取多個項目**,呈現多選行為。

<ListBox SelectionMode="Single">
  <sys:String>A string value</sys:String>
  <sys:String>A string value</sys:String>
  <sys:String>A string value</sys:String>
</ListBox>

對比 WinForms

同樣加入三個相同字串,WinForms ListBox 正常單選。

對比截圖:

根因

WPF ListBox 以物件參考比較項目身分。直接加入字串字面值時,編譯器最佳化導致三個項目指向**同一個字串物件**,選取邏輯誤判為同一項目被重複選取。

現狀

.NET 3.0 → 3.5 SP1 版本均存在此 Bug,微軟似不視為缺陷。建議使用 ListBoxItem 包裝或資料繫結集合避免。

結語

這是 WPF Bug 系列的第一篇,後續將陸續揭露各控件缺陷,敬請期待。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved