【原譯】自動省略功能的WPF文字框控制項

來源:互聯網
上載者:User

免責申明(必讀!):本部落格提供的所有教程的翻譯原稿均來自於互連網,僅供學習交流之用,切勿進行商業傳播。同時,轉載時不要移除本申明。如產生任何糾紛,均與本部落格所有人、發表該翻譯稿之人無任何關係。謝謝合作!

原文連結地址:http://www.codeproject.com/KB/WPF/TextBoxWithEllipsis.aspx

介紹

WPF文字框控制項類,不像TextBlock,他沒有內建的選項,以便當常值內容超過可視地區的時候,顯示省略符號,我想讓我正在做的一個項目能夠擁有這個特性,可是,我在網上找不到一個比較簡單的方法實現他,於是啊,我決定自己寫個TextBox的繼承類,必要的時候能夠顯示省略,我把這個類命名為TextBoxWithEllipsis.

 


TextBoxWithEllipsis屬性列表

既然TextBoxWithEllipsis繼承自TextBox,那麼他就有了TextBox的所有屬性,當然還得有一些其他的屬性,我自己呢,只需要很簡單的幾個屬性,所以就不多加其他的屬性了。

 

LongText

儲存原始的沒有截短的文本,而Text屬性則自動化佈建成他的截斷版本,以省略符號結尾,你也可以把這兩個屬性儲存的內容互換,

隨意。這裡,當我讀取Text屬性的時候,我得到已經截短了的版本,而LongText則得到沒有截斷的版本。

IsEllipsisEnabled

 一個布爾值,使得省略這個功能啟用或者關閉,當啟用的時候,一個省略符號(unicode編碼是0x2026)將會顯示在截斷了

的LongText後面,其他的,和正常的TextBox控制項無異。

UseLongTextForToolTip

這個bool屬性為true的時候,當把滑鼠放到截斷了的文字框上面時,會通過tooltip的方式顯示完整的常值內容。

 

樣本程式

樣本程式是一個vs2010 c# WPF工程,包含兩個相關的類

TextBoxWithEllipsis.cs 這個實現了咱們這個類,你可以簡單的把他拷貝到你自己的工程裡,可能你得改改命名空間

MainWindow.xaml 自適應的WPF視窗,用來測試咱們這個控制項

運行後,直接在“Source Text”文字框裡輸入文本,然後在下面設定一下選項,提示之類的。這個控制項的位置大小會隨著視窗的改變而改改變。並且,當你把焦點移動到我寫的這個文字框的時候,省略功能會暫時取消,好讓你編輯。

實現

代碼假定TextBox.ViewportWidth <TextBox.ExtentWidth,文本放不下因此需要省略符號,測試在LayoutUpdated事件控制代碼中進行,如果文本太長了,就進行二分搜尋,設定Text屬性的長度為上一次太短的和上一次太長的和的一半,Text屬性的改變導致了LayoutUpdated的再一次調用,這樣就一直重複知道找到了LongText合適的子串。

OnTextChanged()方法也被重載以防止當Text屬性被內部改變(比如 LayoutUpdated方法)或從外部輸入或者粘貼到這個控制項的時候。TextChanged事件被觸發,在重載的函數裡,我們就把Text的值又賦值給LongText。然後就可以了

許可

此文章和包含的所有代碼遵循MIT許可。

範例程式碼下載

著作權聲明:本文由http://www.cnblogs.com/lazycoding翻譯,歡迎轉載分享。請尊重作者勞動,轉載時保留該聲明和作者部落格連結,謝謝!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.