原创 Queue集合和信號量

System.Collections.Generic.Queue<T>(消息隊列):                                  MSDN定義爲:先進先出的集合,允許null值,並且可以重複,值可以爲引用類型。其默認

原创 DataGrid中ContextMenu的綁定

在WPF中使用DataGrid,有時會用到ContextMenu,當ContextMenu需要綁定DataGrid列的時候,我們按平時的綁定就直接用ElementName的方式了,但在ContextMenu中是不可 以的,可以用以下方式

原创 WPF 路由事件

 最近因爲工作需要學習WPF方面的知識,因爲以前只關注的是B/S架構的東西,可是沒想到參加工作的第一個項目竟然是C/S架構的WPF方面的開發,因爲Web方面主要是請求響應模型,沒有事件這個東西,在學習we

原创 右鍵菜單自由選擇DataGrid顯示隱藏列

在DataGrid使用中,當有很多列時,可能會遇到選擇性的顯示列,那麼該怎麼辦呢,我是這麼做的: 首先讓MenuItem綁定DataGrid的所有列,然後將MenuItem的Item模板列改爲CheckBox,在讓CheckBox的C

原创 WPF 使用鼠標滾輪控制ListBox水平滾動條滾動

我們都知道在WPF中鼠標滾輪可以控制垂直滾動條滾動,但沒有什麼屬性設置可以讓它控制水平滾動條滾動,所以我們需要自己去實現水平滾動。   首先,在ListBox的Mousewheel事件中獲得ListBox的滾動條,我發現MouseWhee

原创 遞歸查找指定節點

沒什麼可說的,直接上代碼: private ItemTreeModel GetModel(List<ItemTreeModel> list, string Header) { foreach (

原创 DataGrid實現拖動任意列的列頭改變列寬度時,讓其他列的寬度和他一樣寬

首先創建列頭的ColumnHeaderStyle: <DataGrid.ColumnHeaderStyle> <Style TargetType="{x:Type DataGridColumnHeader

原创 WPF TreeView葉子太多時顯示很慢的解決辦法

在WPF中使用DataGrid時當數據很多時也會直接顯示但是會發現,當獲取沒有顯示的DataGridRow時會出錯,原因是因爲DataGrid默認開啓的虛擬加載; 今天在使用TreeView時也遇到的很多數據,顯示時出現了很長時間的卡

原创 在MouseButtonDowm事件中模仿鼠標雙擊

int i = 0; void item_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) { i

原创 WPF中簡單的圖片瀏覽功能

廢話不說直接上代碼: /// <summary> /// MainWindow.xaml 的交互邏輯 /// </summary> public partial class MainWindow : Window

原创 WCF服務端口共享

在開發使用多個WCF時,爲了使計算機相對安全一點,需要共用端口;但會發現後一個服務運行不了,提示”已經有應用程序在監聽“; 這個問題解決起來很簡單: 1、把多個WCF服務的NetTcpBinding的PortSharingEnabl

原创 初識AvalonDock

前些時間由於工作原因接觸了AvalonDock,從中受益匪淺,不敢獨享,在此與大家共勉。 AvalonDock是WPF做的一個類似Visual Studio中的拖拽功能的控件。 想要根據AvalonDock開發WPF項目,首先要下載Ava

原创 Queue<T>集合和信號量

System.Collections.Generic.Queue<T>(消息隊列):                                  MSDN定義爲:先進先出的集合,允許null值,並且可以重複,值可以爲引用類型。其默認

原创 C# 通過Reflection代碼實現載入內置的(dll)資源文件

 動態加載程序集時有時引用的程序集會有依賴項,就會報各種異常; 在網上搜索了很久,終於找到了解決方法,不廢話如下. 先把DLL放進資源庫裏,然後在dll屬性裏面的BuildAction選擇Embedded Resource. 接着在