WPF下通過附加屬性實現單例項啟動

2022-02-15 10:53:50 字數 3267 閱讀 7511

**如下:

class

singletonwindow

public

static

boolean

getisenabled(dependencyobject

element)

//根據附加屬性的返回值使能單例項模式

public

static

void

onisenabledchanged(dependencyobject obj,

dependencypropertychangedeventargs

args)

process();

return;

}public

static

void process()    //

如果不適用附加屬性也可以直接使用此函式

}const

intws_shownormal = 1;

[system.runtime.interopservices.dllimport("user32.dll")]

static

extern

bool showwindowasync(intptr hwnd, int

cmdshow);

[system.runtime.interopservices.dllimport("user32.dll")]

static

extern

bool setforegroundwindow(intptr

hwnd);

[system.runtime.interopservices.dllimport("user32.dll")]

static

extern

bool flashwindow(intptr hwnd,bool

binvert);

static

system.diagnostics.process

getrunninginstance()

return

null;

}static

void

handlerunninginstance(system.diagnostics.process instance)

setforegroundwindow(instance.mainwindowhandle);

showwindowasync(instance.mainwindowhandle,

ws_shownormal);

}else

}static

void

flashwindow(intptr hanlde, int interval)}

**其實很簡單,前半部分是註冊依賴屬性,然後根據依賴屬性判斷是否啟用單例項模式;後半部分就是乙個傳統的單例項模式的功能了。也就不介紹了。

使用這段**也很簡單:

xaml方式:在主視窗的xaml檔案中加入附加屬性即可

src:singletonwindow.isenabled="true"

>

傳統方式:直接使用**中後半部分,和winform下沒什麼區別。在主視窗的建構函式裡面加入這句話。

singletonwindow.process();

**如下:

class

singletonwindow

public

static

boolean

getisenabled(dependencyobject

element)

//根據附加屬性的返回值使能單例項模式

public

static

void

onisenabledchanged(dependencyobject obj,

dependencypropertychangedeventargs

args)

process();

return;

}public

static

void process()    //

如果不適用附加屬性也可以直接使用此函式

}const

intws_shownormal = 1;

[system.runtime.interopservices.dllimport("user32.dll")]

static

extern

bool showwindowasync(intptr hwnd, int

cmdshow);

[system.runtime.interopservices.dllimport("user32.dll")]

static

extern

bool setforegroundwindow(intptr

hwnd);

[system.runtime.interopservices.dllimport("user32.dll")]

static

extern

bool flashwindow(intptr hwnd,bool

binvert);

static

system.diagnostics.process

getrunninginstance()

return

null;

}static

void

handlerunninginstance(system.diagnostics.process instance)

setforegroundwindow(instance.mainwindowhandle);

showwindowasync(instance.mainwindowhandle,

ws_shownormal);

}else

}static

void

flashwindow(intptr hanlde, int interval)}

**其實很簡單,前半部分是註冊依賴屬性,然後根據依賴屬性判斷是否啟用單例項模式;後半部分就是乙個傳統的單例項模式的功能了。也就不介紹了。

使用這段**也很簡單:

xaml方式:在主視窗的xaml檔案中加入附加屬性即可

src:singletonwindow.isenabled="true"

>

傳統方式:直接使用**中後半部分,和winform下沒什麼區別。在主視窗的建構函式裡面加入這句話。

singletonwindow.process();

WPF 附加屬性

附加屬性的作用就是將屬性與資料型別 宿主 解耦,讓資料型別的設計更加靈活。其本質就是依賴屬性,兩者僅在註冊和包裝器上有一點區別。附加屬性 游標移動到類體中 花括號之間 輸入propa tab tab,附加屬性的框架就準備好了,繼續 tab tab 可以在幾個空缺間輪換並修改,直至按下enter。cl...

WPF 附加屬性

1 附加屬性 乙個屬性原來不屬於某個物件,但由於某種需求而被後來附加上去。附加屬性的本質是依賴屬性。2 附加屬性作用 將屬性與資料型別解耦,讓資料型別的設計的更加靈活。3 vs 2008中,依賴屬性的snippet是propdp,附加屬性的snippet是propa,屬性的snippet是prop。...

WPF 附加屬性彙總

本文內容翻譯自微軟官網部分內容 2 為什麼要使用附加屬性 使用附加屬性的目的是,允許子元素給父元素的屬性設定唯一值。乙個場景就是,ui子元素告知ui父元素,子元素自己應該如何在父元素中展示,例如dockpanel.dock屬性。這個屬性被建立為乙個附加屬性,因為它被設計為由被包含的子元素設定值而不是...