1. image
預設情況下所有的的解碼過程都是在ui執行緒同步進行,所以如果用如下方式顯示將會阻塞ui執行緒:
以上方式ui執行緒將對解碼,此過程中ui會一直阻塞直到解碼結束。
解決方式如下:
這兩種顯示方式在模擬器上驗證時,不會對應用產生有明顯的效果差別,因為在模擬器中對手機處理器的速度沒有模擬
注意:用第二種種方式顯示時在blend中會提示「invalid xaml」
2. listbox(itemscontrol)
需要在乙個集合中顯示不同型別的資料時,例如新鮮事、日誌、狀態等,往往會採用自定集合控制項,然後在控制項裡根據資料型別採用不同的資料模板(具體做法將在錯誤用法裡談到)。這樣的做法最大的影響就是放棄listbox的緩衝機制,當listbox發現它快取的模板不能滿足資料的需要時就會放棄快取,這樣做的結果就是只有在列表項loaded時才匆忙的讀取資料、尋找模板、載入到集合容器中,會造成很糟的使用者體驗。
正確的做法是把需要顯示的所有模板放到乙個資料模板中,然後使用例如converter的方式(converter的系統資源很小)決定顯示/隱藏相應的模板。
下面將分別介紹兩種做法:
首先準備必要資料:
資料類 a、b (即要顯示的不同資料型別), 資料來源
private observablecollection datasource = new observablecollection();錯誤用法:u 在資源中定義不同的樣式public observablecollectiondatasource
set }
}public
mainpage()
);this.datasource.add(new b() );
this.datasource.add(new a() );
this.datasource.add(new b() );
this.datasource.add(new b() );
this.datasource.add(new a() );
}
"u 自定義集合控制項,並在控制項中尋找不同的資料模板tp1">
"horizontal
" horizontalalignment="
left
">
"" width="
50">
"" margin="
0 5" width="
100">
"">
"tp2
">
"horizontal
" >
"" width="
100" foreground="
orange
">
"" foreground="
orange
">
publicu 使用時沒有區別class
mylistbox : itemscontrol
container.contenttemplate =tmp;}}
"以上就是普通的錯誤用法。">
"vertical
">
下面展示正確的做法:
u 在資源中定義資料模板
"u 做轉換器convertertp">
"at" orientation="
horizontal
" horizontalalignment="
left
"visibility="
, converterparameter=at}
">
"" width="
50">
"" margin="
0 5" width="
100">
"">
"bt" orientation="
horizontal
"visibility="
, converterparameter=bt}
">
"" width="
100" foreground="
orange
">
"" foreground="
orange
">
publicu 使用時無區別class
datatypetovisibilityconverter : ivalueconverter
if (value is a && "at"
.equals(parameter.tostring()))
if (value is b && "bt"
.equals(parameter.tostring()))
return
visibility.collapsed;
}public
object convertback(object value, type targettype, object
parameter, system.globalization.cultureinfo culture)
}
"u 執行效果一樣,下圖顯示兩中做法的共同效果0 20 0 0
" itemtemplate="
" itemssource="
">
可以看出兩種做法的執行結果完全一樣,但是資料結構比較複雜時第二種做法就提現了快取的優勢。
WP7 效能優化系列 1
1.image 以上方式ui執行緒將對解碼,此過程中ui會一直阻塞直到解碼結束。解決方式如下 這兩種顯示方式在模擬器上驗證時,不會對應用產生有明顯的效果差別,因為在模擬器中對手機處理器的速度沒有模擬 2.listbox itemscontrol 需要在乙個集合中顯示不同型別的資料時,例如新鮮事 日誌...
WP7 開發(五) wp7控制項開發(二)
1 passwordbox 用於輸入自定義遮罩字元的密碼框控制項,屬性passwordchar用來顯示輸入的密碼替換符號 2 textbox 可以讓軟鍵盤產生不同的鍵面效果 inputscope屬性可通過 獲取屬性列表 typeof inputscopenamevalue getfields bin...
wp7遊戲 wp7 競賽類遊戲 集合貼
wp7遊戲 極品飛車14 熱力追蹤 1.2 wp7遊戲 驚險火箭車 1.0 wp7遊戲 雷霆快艇 1.4 遊戲 極品飛車之臥底 v1.0.0.0 wp7遊戲 速度與激情 1.1.0.0 wp7遊戲 野蠻狂飆 1.0 wp7遊戲 全民卡踏車 1.0 wp7遊戲 瘋狂賽車 1.0.0.0 wp7遊戲 極...