日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

[WPF Bug清单]之(6)——Button的IsCancel属性失效

發布時間:2025/7/14 73 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [WPF Bug清单]之(6)——Button的IsCancel属性失效 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上一篇中,描述了模態對話框隱藏之后變成了非模態的Bug,很多人回復表示這不算是一個Bug,我也表示理解。Bug只有在需求之下才有意義,不同的需求,對Bug的界定也不一樣。作為一個Framework.NET只能做到在多數時候是符合最廣泛群體的需求的,就可以說它合格。但是對于前一篇描述的問題,想補充一下自己的考慮。

?

WindowShowShowDialog,用于將窗體展現(我沒有用顯示)出來,而Close用于關閉。Close之后就不能再用Show或是ShowDialog再次將窗體展現出來,否則會拋出異常,所以5樓的gboxcc回復的是錯的。很同情這位gboxcc,因為他認為我說錯的那句,恰恰是我寫過代碼驗證過的。

?

如果想隱藏而不關閉一個窗體,顯然用Close是不行的。而且還要把所有的Close事件Cancel掉,保證窗體不會被Close,然后只能用Visibility 將窗體隱藏起來。隱藏之后,如果要將窗體再次顯示出來,我的第一感覺是用Visibility,但是發現不行。

?

從這個角度而言,Window類,Show/Close只在開始和結束的時候調用,因為它們不能交替調用;在窗體Show之后,用Visibility控制其可見性,因為可見性可以隨意交替設置的。我認為這才是一個非常自然的事情。但是Window的實際情況是,Visibility的設置,會使isShowingDialog變量的值發生變化,單從需求上講,這是不應該的。所以將其做為一個Bug提了出來。Colin Han認為這是“為了更好地用戶體驗,專門做出的設計?!?#xff0c;我亦不以為然。而且我感覺微軟的UX團隊與開發團隊的溝通還很不充分,比如我在另一篇文章中提到的WPFWindow,沒有提供一個屬性來設置一個窗體是否顯示Icon,這本身就不符合微軟自己的UX Guide。

?

回復的人一致認為,再次顯示這個窗體時也應該用ShowDialog。好,這篇文章就是為次而生的。因為用ShowDialog將窗體再次顯示出來同樣有問題。連代碼都不用改,直接用上次的代碼就可以重現這個問題。使用ShowDialog方法將一個窗體再次顯示出來之后,窗體上的”Hide Self”按鈕失效了。注意是再次,第一次ShowDialog出來時的行為是正常的。

?

這里順便介紹一下IsCancel屬性,MSDN上對它的解釋如下:獲取或設置一個,該值指示Button是否是一個“取消”按鈕。用戶可以通過按ESC鍵激活“取消”按鈕。其實我感覺這句話對于新手而言實在是沒有什么幫助。好像就告訴別人這個屬性就是給Button加了個ESC鍵作為快捷鍵。必須要和MSDN上的很多文檔合起來看才知道這個IsCancel按鈕在不同環境下分別起什么作用,其實還不如自己寫個代碼試一下來得方便。

?

對于示例中的代碼而言,IsCancel就相當于讓當前窗體關閉。這是給窗體添加一個關閉按鈕最簡單的方式(沒有之一)。因為這個Bug用的就是上一篇的代碼。所以就不給大家貼圖了。自己運行一下吧。邏輯如下:

?

1.?????? 點擊示例中的Show Model Dialog按鈕——顯示一個模態對話框。

2.?????? 可以用Hide Self關閉彈出框。

3.?????? 再用Show Model Dialog彈出這個對話框。

4.?????? 那個Hide Self按鈕不再起作用了。

?

同系列的其它文章:

[WPF Bug清單]()與之(1)——可以多選的單選ListBox

[WPF Bug清單](2)——RadioButtonIsChecked綁定失效

[WPF Bug清單](3)——暗中創建文件的打開文件對話框

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

[WPF Bug清單](5)——隱藏模態對話框后變成非模態

[WPF Bug清單](7)——頑固的Error Template

[WPF Bug清單](8)——RowDefinitionMaxHeight在一定條件下失效

[WPF Bug清單](9)——消失的光標

?

我是MS Fan,但是我依然會以挑剔的眼光看它;只因為我是MS Fan的原因是,從多數開發和娛樂和應用的角度而言,MS是目前最好的選擇。如果有一天Linux的哪個發行版在多數方面超過了MS,我會義無反顧地投入Linux。不過是一個平臺,不是女友,也不是“知已者”,不需要相守一生。

總結

以上是生活随笔為你收集整理的[WPF Bug清单]之(6)——Button的IsCancel属性失效的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。