WPF中MVVM模式下控制項自有的事件繫結

2022-01-11 18:07:48 字數 1312 閱讀 5915

1、原因

在wpf中單純的命令繫結往往不能滿足覆蓋所有的事件,例如combobox的selectionchanged事件,datagrid的selectionchanged事件等等,這時就可以用事件繫結來完成。

2、示例

事件繫結需要用到:system.windows. interactivity.dll庫,如果安裝了blend for visual studio,裡面就包含了這個dll,在interaction.triggers裡面新增乙個或多個eventtrigger並指定關注的的事件名稱,在eventtrigger中通過invokecommandaction來繫結事件對應的命令。

**如下:

"

3" width="90"

selecteditem="

" itemssource="

" selectedvaluepath="id"

displaymemberpath="

statusname

" height="

40" foreground="

black

"horizontalcontentalignment="

left

" verticalcontentalignment="

center

"horizontalalignment="

right

" verticalalignment="

center

" >

"selectionchanged

">

"">

view code

同時需要引入命名空間,如下:

xmlns:x="

"xmlns:mc="

"xmlns:d="

"xmlns:i="

clr-namespace:system.windows.interactivity;assembly=system.windows.interactivity

"

view code

然後再viewmodel中實現該命令即可,如:

public relaycommand confirmstatuscommand 
在類的建構函式中實現該命令屬性:

confirmstatuscommand = new relaycommand(args =>);
view code

整體就這樣,供參考,但此方法也有侷限,就是不能把動態的命令引數(如鍵盤按鍵事件,獲取按的鍵值引數)傳入viewmodel,如需傳引數,還得實現乙個引數類。

WPF程式設計,MVVM模式下控制項獲得焦點的一種方法。

mvvm模式下,viewmodel層無法直接控制項view層的控制項,這裡通過為控制項增加資料觸發器的方法,讓控制項獲得焦點。一般用於輸入輸出時讓控制項獲得焦點。其中,isfocus是vm層的乙個布林量,當為真時,textbox控制項獲得當前的焦點,用於輸入鍵盤直接輸入資料。需要注意的是,要為控制項...

MVVM模式和在WPF中的實現

我大概是從2102年底開始接觸wpf,之前一直用winform。剛開始看了下感覺跟winform區別不大,控制項可以拖進去,選中了控制項屬性面板可以設定屬性 事件面板可以監聽事件,後台 處理事件,一切都那麼的熟悉。xaml布局也跟android布局很像,所以沒學習就直接開始了,覺得摸索摸索基本就差不...

WPF中MVVM模式下的按鈕事件實現和依賴項通知

自從上一次寫mvvm入門到現在,又過了好長時間了,一直想著把事件的繫結總結一下,但是一來是認識的不夠,感覺講不清楚 二來是懶。不管了,寫的不對的地方大家提一下,錯誤要是不暴露它就一直是錯誤。先說按鈕的事件繫結,net中提供的icommand就是這麼用的,自己寫乙個command的基類,繼承 icom...