1、原因
在wpf中單純的命令繫結往往不能滿足覆蓋所有的事件,例如combobox的selectionchanged事件,datagrid的selectionchanged事件等等,這時就可以用事件繫結來完成。
2、示例
事件繫結需要用到:system.windows. interactivity.dll庫,如果安裝了blend for visual studio,裡面就包含了這個dll,在interaction.triggers裡面新增乙個或多個eventtrigger並指定關注的的事件名稱,在eventtrigger中通過invokecommandaction來繫結事件對應的命令。
**如下:
"view code3" width="90"
selecteditem="
" itemssource="
" selectedvaluepath="id"
displaymemberpath="
statusname
" height="
40" foreground="
black
"horizontalcontentalignment="
left
" verticalcontentalignment="
center
"horizontalalignment="
right
" verticalalignment="
center
" >
"selectionchanged
">
"">
同時需要引入命名空間,如下:
xmlns:x="view code"xmlns:mc="
"xmlns:d="
"xmlns:i="
clr-namespace:system.windows.interactivity;assembly=system.windows.interactivity
"
然後再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...