乙個簡單的例子就是大家在使用很多應用程式,例如在使用microsoft word 時會遇到一種情況,不管你開啟多少個文件,系統一次只能載入乙個winword.exe 例項。當開啟新文件時,文件在新視窗顯示,但是始終只有乙個應用程式控制所有文件視窗;如:可以提供平鋪當前所有文件中相鄰視窗的文件的特性。
wpf團隊推薦我們一種最簡單的方法就是:使用windows 窗體提供的內建支援,該內建支援最初是用於visualbasic 應用程式的,使用window窗體和visualbasic 的這一特新來開發基於c#的wpf程式會存在乙個新舊應用程式之分,本質上舊式應用程式充當了wpf應用程式的封裝器。流程是:當啟動程式時將建立舊式應用程式,舊式應用程式接著建立wpf應用程式,舊式應用程式處理例項管理,而wpf應用程式處理正真的應用。
下面我們通過乙個例項來演示建立單例項應用程式的具體步驟:
一.建立wpf窗體專案,並新增microsoft.visualbasic.dll 引用。
二.首先建立乙個document.xaml,和 documentlist.xaml 視窗檔案,使用定義的類documentreference 表示對document引用。
documentreference :
1 public classdocumentreference2 7 set 8 }9
10 private stringname;11 public stringname12 14 set 15 }16
17 public documentreference(document document, stringname)18 22 }
view code
document.loadfile() 通過檔名讀取文件內容,document.onclosed() 事件在文件窗體關閉時觸發,用於從動態集合移除例項。
public partial classdocument : window
public voidloadfile(documentreference docref)
protected override voidonclosed(eventargs e)
8 set 9 }10
16 documentlist list = newdocumentlist();17 this.mainwindow =list;18 list.show();19
20 //load the document that was specified as an argument.
21 if (e.args.length > 0) showdocument(e.args[0]);22
23 }24
25 public void showdocument(stringfilename)26 37 catch
38 41 }42 }
view code
issingleinstance 用於確定此應用程式是否為單例項應用程式,在建構函式中設定值為true。
重寫 onstartup(),程式啟動時,重寫該方法並建立wpf應用程式物件。
重寫 onstartupnextinstance(),當另乙個應用程式啟動時觸發該方法,該方法提供了訪問命令列的引數的功能。此時可以呼叫wpf應用程式類的方法來建立視窗,但不能建立另乙個應用程式物件。
15 //return base.onstartup(eventargs);
21 protected override voidonstartupnextinstance(startupnextinstanceeventargs eventargs)22 {23
view code
public class startup
[stathread]
public static void main(string args)
wpf 單列表 WPF 應用程式單例模式
wpf程式如何只允許開啟乙個視窗,當視窗存在時,啟用視窗。步驟 2 新增引用 system.runtime.remoting 如下 stathread public static void main if singleinstance.initializeasfirstinstance unique...
WPF 迴圈顯示列表
原文 wpf 迴圈顯示列表 專案需要類似手機上設定時間的控制項,可以一直滾動顯示的內容連續的。在wpf中找到的列表控制項只能滾到最後再反向滾動。基於scrollviewer和stackpanel來改造,xaml如下 height path itemheight grid.rowdefinitions...
WPF 迴圈顯示列表
原文 wpf 迴圈顯示列表 專案需要類似手機上設定時間的控制項,可以一直滾動顯示的內容連續的。在wpf中找到的列表控制項只能滾到最後再反向滾動。基於scrollviewer和stackpanel來改造,xaml如下 height path itemheight grid.rowdefinitions...