日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

DotNet关键知识点——WPF篇(一)(范德成编辑批注版)

發(fā)布時間:2023/12/10 asp.net 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DotNet关键知识点——WPF篇(一)(范德成编辑批注版) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1. Journal 的使用

Journal 用于在 XAML 瀏覽器應(yīng)用程序(XBAP)中維護歷史訪問頁。刪除前一訪問頁只需調(diào)當(dāng)前 NavigationService 對象的 RemoveBackEntry() 即可;而增加一個訪問頁則復(fù)雜得多:

1) 實現(xiàn)一個 CustomContentState 的派生類,每個對象對應(yīng)一個要保存的訪問頁,其中數(shù)據(jù)結(jié)構(gòu)用于維護這個歷史訪問頁的數(shù)據(jù),在構(gòu)造的時候通過適當(dāng)?shù)膮?shù)傳入。它必須標(biāo)上 Serializable() 屬性。在這個類里要重載一個 Replay 方法和一個 JournalEntryName。Replay 一般通過向構(gòu)造時傳入的頁面回調(diào)提供數(shù)據(jù),恢復(fù)出歷史頁面。JournalEntryName 就是這個項目顯示在訪問歷史下拉列表中的名稱。

2) 相關(guān)頁面需要實現(xiàn) IProvideCustomContentState 接口。這個接口必須實現(xiàn) GetContentState 函數(shù),這個函數(shù)用于在當(dāng)前頁面上發(fā)生瀏覽切換時對瀏覽服務(wù) NavigationService 提供一個 CustomContentState。

3) 在需要保存的狀況下(如用戶對頁面進行變動時)對頁面調(diào)用 NavigationService.AddBackEntry 手動進行快照。

2. NavigationService 的事件

?

頁面瀏覽事件不是接力事件(Routed Events),且在一切的瀏覽過程中(如通過 NavigationService 調(diào)用或超鏈接訪問)均會發(fā)生。以下依次羅列一次頁面瀏覽發(fā)生的事件:

Navigating開始轉(zhuǎn)向指定的頁面
Navigated瀏覽啟動后但最終頁面送達之前發(fā)送的一個事件
NavigationProgress在頁面加載過程中每傳送1KB數(shù)據(jù)發(fā)生的一個事件
LoadCompleted頁面送達后發(fā)送的第一個事件
FragmentNavigation如果訪問指向目標(biāo)頁面的某個單元,則在轉(zhuǎn)向該單元時發(fā)送這個事件

此外 NavigationStopped 和 NavigationFailed 分別表示 StopLoading 導(dǎo)致瀏覽取消(不包括在 Navigating 事件響應(yīng)中 Cancel)和瀏覽目標(biāo)頁面失敗的事件。

3. WPF的后臺任務(wù)

msdn 上有個例子值得一看,它同時詳細說明了 BackgroundWorker 和 Monitor 的使用:

http://msdn.microsoft.com/library/system.threading.monitor.pulse(VS.95).aspx

注意其中多個 m_worker 通過 ProgressChanged 回調(diào)對 outputBlock.Text 可以做到直接且互斥的訪問,說明 WPF 的后臺任務(wù)是一種不同于一般線程的特殊的機制(小范蛙注:很有可能是通過 Windows API 中的 SendMessage 或類似的機制,這種機制在 .NET Framework 中也有應(yīng)用,即控件的 Invoke 方法,它通過在控件所在的窗口線程上 [而非調(diào)用它的線程上] 執(zhí)行方法來避免非串行的調(diào)用)。如果不使用這個方法,就需要在線程中調(diào) m_worker.ReportProgress 的地方改用調(diào) outputBlock.Dispatcher.BeginInvoke 的方法更新 outputBlock 內(nèi)容。

4. 工程中的Settings

在工程屬性中的 Settings 可以作為 Properties.Settings.Default 的同名屬性(由開發(fā)環(huán)境即時生成)直接訪問,并且類型一致。調(diào)用 Properties.Settings.Default.Save 方法即可保存。這和基于 XML 保存的 Application Settings 不同。(小范蛙補充:這個是自動生成的類,是強類型的,有助于避免程序引用不存在的設(shè)置項。)

5. 命令

命令相對事件來說比較獨立。命令的組成:

1) 命令定義:定義一個命令。類型為 RoutedUICommand,通常作為靜態(tài)屬性封裝在一個類中。

2) 命令綁定:連接命令和(多個)處理函數(shù)的橋梁。有代碼綁定(UIElement 的 CommandBindings 集合)和 XAML 直接綁定兩種方法。通過各層單元的命令綁定,實現(xiàn)命令上浮式(Bubbling)搜索。(注意,命令不同于事件接力,其傳遞過程中一旦遇到處理方法,就不再繼續(xù)傳遞,參考資料 2 似乎也報告了這個問題)

3) 命令激發(fā):觸發(fā)命令的條件。主要有控件直接觸發(fā)(實現(xiàn) ICommandSource 控件的 Command 屬性)、手勢觸發(fā)(命令的 InputGestures 集合,可在構(gòu)造時添加)和代碼觸發(fā)(命令的 Execute 方法)三種方法。

6. 事件

接力事件(或路由事件,Routed Events)完全奉行下沉式(Tunneling)和上浮式(Bubbling)接力過程。事件處理方法可以通過 XAML 直接靜態(tài)綁定,或用 AddHandler(或 += 操作)動態(tài)綁定(小范蛙注:此處 AddHandler 不是指 VB.NET 的關(guān)鍵詞 AddHandler)。

參考資料

1. http://msdn.microsoft.com/magazine/cc785480.aspx#id0190070
2. http://social.msdn.microsoft.com/forums/wpf/thread/1fb817dc-4f6f-4d2c-8bdf-624b26a0ed45/
3. http://joshsmithonwpf.wordpress.com/2008/03/18/understanding-routed-commands/?(這則會導(dǎo)引至 CodeProject 和 MSDN 的幾篇比較深入的文章)

轉(zhuǎn)載于:https://www.cnblogs.com/quanben/archive/2009/11/18/3128938.html

總結(jié)

以上是生活随笔為你收集整理的DotNet关键知识点——WPF篇(一)(范德成编辑批注版)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。