WPF介面設計技巧(5) 自定義列表項呈現內容

2021-09-22 13:13:52 字數 1814 閱讀 1111

接續上次的程式,稍微改動一下原有樣式,並新增乙個資料模板,我們就可以達成下面這樣的顯示功能:

滑鼠懸停於檔案列表項上,會在工具提示中顯示影象縮圖及檔名、檔案大小資訊。

選中乙個列表項,該列表項會擴大,並動態顯示出乙個小縮圖及檔案的所在路徑。

**如下:

下面逐步講解一下**。

首先需要引入乙個命名空間,就是

fileinfo 

類所在的

system.io 

命名空間,我們將它的別名定義為「c」。

標記是為介面**現的資料型別定義的顯示模板,如果不指定

x:key 

的話,那麼介面上不管何處出現此型別的物件,都會轉為這樣的顯示方式。

是一種簡單的容器元素,它會把它裡面的所有元素都橫著排列,排不下了就換一行接著排,這類似網頁的預設布局模式,很容易掌握。

內定義的就是工具提示裡的那個縮圖和文字了,其他**都很簡單就不多說了。

很多人覺得工具提示裡可以放是一件很神奇的事,的確很讓人驚喜,但是其實

wpf元素的內容格式基本都是

object 

3d模型,都可以哦。

我們來看觸發器,這個觸發器定義的

height 

是誰的屬性呢?記得以前我們自定義樣式時怎麼顯示元素的內容嗎?對,contentpresenter,這就是所有內容的總容器。

為什麼要在

contentpresenter

高度為68 

的時候觸發動畫呢?這其實我是使了個歪點子~我沒找到資料內容相應上層元素屬性變化的方法,所以就用

contentpresenter

高度變化與這邊產生聯動,從而間接響應

listbox 

那邊的isselected 

屬性變化。

動畫的內容就是把先前隱藏的和一行文字顯示並放大出來,沒什麼難點的。

行了,**部分講解完了,我們來談談如何完善這個程式。

這程式模樣不錯,但是有幾點很不爽:

1顯示檔案的大小的單位是位元組,這讓人很暈。

2 選擇了非檔案不會顯示任何提示,只是處空了。

3fileinfo

物件的內容在後台被更改不會及時反映到介面上。

對應的解決辦法:

1 採用自定義類,獲取必要的

fileinfo 

物件的部分屬性值,定義專門用於以其它單位顯示檔案大小的屬性。

2 還是採用自定義類,獲取

fileinfo 

物件的副檔名屬性,將之賦予自定義的乙個依賴屬性上,依賴屬性可以被觸發器

trigger

3 依然是自定義類,只有實現

inotifypropertychanged

介面的型別才可以提供更改通知,以維護雙向實時繫結。

wpf是個大舞台,我們可以做的還有很多。

WPF設計 自定義窗體

原文 wpf設計 自定義窗體 效果圖如下 實現思路 1.繼承window類 2.為自定義的customwindow類設計窗體樣式 使用blend很方便!3.為窗體增加最大最小化和關閉按鈕,並實現滑鼠拖拽改變窗體大小 使用derek bartram的windowresizer.dll庫 說明 1.繼承...

WPF設計 自定義窗體

原文 wpf設計 自定義窗體 效果圖如下 實現思路 1.繼承window類 2.為自定義的customwindow類設計窗體樣式 使用blend很方便!3.為窗體增加最大最小化和關閉按鈕,並實現滑鼠拖拽改變窗體大小 使用derek bartram的windowresizer.dll庫 說明 1.繼承...

WPF設計 自定義窗體

效果圖如下 實現思路 1.繼承window類 2.為自定義的customwindow類設計窗體樣式 使用blend很方便!3.為窗體增加最大最小化和關閉按鈕,並實現滑鼠拖拽改變窗體大小 使用derek bartram的windowresizer.dll庫 說明 1.繼承window類 建立custo...