2016年6月19日 星期日
UserControl 自我綁定
在套用UserControl時,宣告DataContext為
DataContext="{Binding RelativeSource={RelativeSource Self}}"
否則會與套用者綁定
2015年8月23日 星期日
[常用]將所有dll檔封裝進exe檔(WPF)
一般我們寫程式的時候都會用到許多dll
但是把程式交出去的時候如果有一堆dll會很難管理,也不是很好看
這時候就需要把dll封裝進程式執行檔裡面
1.修改Project.csproj
2.右鍵點選參考底下的dll,把複製到本機這個屬性改為False,該dll就不會一起複製到程式執行的資料夾內。
但此動作會使得程式參考不到該dll檔
3.將dll檔加進Resources內,建置方式選擇內嵌資源,就跟一般放影像檔、音效檔一樣,會把dll封裝進exe執行檔內。
但程式呼叫到該dll時不會自動找到Resources內的dll檔,必須自行對應
4.新建一支Program.cs檔,取代App.xaml.cs成為專案起始檔(右鍵點專案可以設定起始檔)
完成以上步驟後,再建置程式,就會發現dll檔都不見了,而exe檔明顯變肥
但是把程式交出去的時候如果有一堆dll會很難管理,也不是很好看
這時候就需要把dll封裝進程式執行檔裡面
1.修改Project.csproj
2.右鍵點選參考底下的dll,把複製到本機這個屬性改為False,該dll就不會一起複製到程式執行的資料夾內。
但此動作會使得程式參考不到該dll檔
3.將dll檔加進Resources內,建置方式選擇內嵌資源,就跟一般放影像檔、音效檔一樣,會把dll封裝進exe執行檔內。
但程式呼叫到該dll時不會自動找到Resources內的dll檔,必須自行對應
4.新建一支Program.cs檔,取代App.xaml.cs成為專案起始檔(右鍵點專案可以設定起始檔)
完成以上步驟後,再建置程式,就會發現dll檔都不見了,而exe檔明顯變肥
2015年7月17日 星期五
超實用 強制更新Listview的Itemsource
ICollectionView view = CollectionViewSource.GetDefaultView(DeviceSeries.Instance.dic_device);
view.Refresh();
view.Refresh();
2015年3月25日 星期三
同時使用viewport3D與RenderTargetBitmap時發生的問題
最近有個專案,在使用3D模組的同時,還要不斷地對其拍照上傳
於是我使用了RenderTargetBitmap.Render(viewport3D)來對整個3D建模進行拍攝
但是我發現這行指令執行完畢後,viewport3D上正在執行的動畫效果及貼圖全都會消失
疑似是該指令讓viewport3D失去綁定關係
目前解決的方法是在把viewport3D從其父容器上移除並重新加入
2015年2月16日 星期一
PerspectiveCamera(3D) in WPF
有幾個參數
Position代表攝影機的位置
LookDirection 代表攝影機在該位置面對的方向
UpDirection 代表攝影機的上方 一般不設定時為(0,1,0) 如果改成(0,-1,0)會發現物件顛倒了
2014年12月24日 星期三
2014年12月21日 星期日
WPF 設定動畫fps
如果常常在使用Animation的人,應該會發現你的程式cpu使用率異常的高,這是因為wpf內建設定動畫的fps是60
想要降低cpu使用率有兩個方法,第一個是把動畫做成gif直接嵌入,或是在程式初始化時把fps設定為30~40(一般人類肉眼可辨識的極限大概在30左右)
以下是設定fps的程式碼,寫在InitializeComponent()之前
2014年12月3日 星期三
List,ObservableCollection,SortableObservableCollection
ObservableCollection就是實作了INotifyCollectionChanged的List
INotifyCollectionChanged是當資料改變時,通知介面層的一個接口,在WPF與silverlight中被大量使用在資料繫結上
ObservableCollection與List之間可互相轉換
SortableObservableCollection
可自動進行排列的ObservableCollection物件
訂閱:
文章 (Atom)