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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

WPF中的命令(Command)

發布時間:2023/12/4 asp.net 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WPF中的命令(Command) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

????這節來講一下WPF中的命令(Command)的使用。

【認識Command】

????我們之前說過,WPF本身就為我們提供了一個基礎的MVVM框架,本節要講的命令就是其中一環,通過在ViewModel中聲明命令,從View中使用Binding綁定命令,就能實現從View到ViewModel之間操作的流通。

????ICommand 接口:

????所有的命令都是需要繼承ICommand接口,該接口有如下三個成員:

????我們先說第二個成員,它是個返回值為bool的方法,通過這個方法,可以設置命令能不能繼續執行,即返回值為TRUE,命令繼續執行,返回值為FALSE命令不會執行;

????第一個成員是個事件處理器,從名字可以看出來該事件處理器關注于第二個成員,也就是當命令能否執行的狀態出現改變時可以使用此事件通知到關注此命令執行狀態的成員;

????第三個成員也是個方法,命令的執行邏輯放在這個方法里邊,當CanExecute返回值為TRUE時,該方法才會被執行。

【自定義Command】

????下面我們就來自定義一個命令,這樣能比較方便的演示命令的使用:

????本節以MVVM模式演示,項目結構如下:

??? MyCommand為自定義的命令類,代碼如下:

? ? MyCommand類在實例化時需要外部傳入執行的方法以及能否繼續執行的判斷方法。

??? MainViewModel中的代碼如下:

????在ViewModel中聲明命令要注意,命令必須是屬性,不能是字段。

??? View代碼如下:

????在Button有個Command屬性,我們可以直接使用Binding和ViewModel中的命令對象做綁定。

????此處要注意MainView的構造方法中這一行代碼:

??? DataContext屬性要設置為ViewModel實例,這樣View才能跟ViewModel關聯上,從而使用Binding才能綁定上MyCommand命令。

????另外需要知道的是,Button中的Command是通過點擊觸發的,也就是說當你點擊的Button命令就會執行,其它的控件,如ListBox中的Item,需要雙擊才能執行命令,因為單擊是選中Item。

????當程序運行時,點擊按鈕,輸出窗口會打印“命令被執行了”字樣:

????然后我們清除掉輸出窗口的內容,當再一次點擊按鈕時,因為isCanExec被設置為FALSE,所以命令終止執行,輸出窗口無內容:

【命令參數CommandParameter】

????如果命令僅僅是這樣使用,那就太單調了,大家肯定注意到了Execute和CanExecute方法還有個類型為object的參數,這個參數就是命令參數,它可以接收我們自定義的數據,在執行命令時傳入進來,我們則可以根據這個參數,對執行邏輯做多樣化的判斷,下面我將代碼稍作改變:

????在界面上放置兩個按鈕,并修改ViewModel代碼為如下所示:

????在Button中使用CommandParameter屬性設置命令的參數,默認會將數據當做string處理,當然它也可以使用Binding跟其它屬性做綁定,關于View與ViewModel之間的數據綁定,我們后期講解。

????在MyCommand的執行邏輯中判斷參數的值,從而輸出不同的結果,一次點擊按鈕結果如下:

本節到此結束,今天是1024程序員節,祝大家節日快樂!

總結

以上是生活随笔為你收集整理的WPF中的命令(Command)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。