首頁 > 後端開發 > C++ > 通用 ICommand 或 RelayCommand 是可重複使用 MVVM 指令的最佳方法嗎?

通用 ICommand 或 RelayCommand 是可重複使用 MVVM 指令的最佳方法嗎?

Mary-Kate Olsen
發布: 2025-01-20 17:30:11
原創
212 人瀏覽過

Is a Generic ICommand or RelayCommand the Best Approach for Reusable MVVM Commands?

在可重複使用 MVVM 結構中實作指令

在最近的 MVVM 實作中,出現了對多個指令的需求。為了減輕創建單一 ICommand 類別這一繁瑣過程,設計了一種替代方法。然而,其有效性和潛在改進之處尚待討論。

提出的解:泛型 ICommand

為了整合命令創建,引入了一個泛型 ICommand 類,利用委託來執行和實作可執行功能。在這個 ICommand 的建構函式中,指派了兩個委託方法。隨後,ICommand 方法呼叫委託方法。

雖然功能有效,但這引發了一個問題,即這種方法是否符合最佳實踐,或者是否存在更合適的解決方案。

一種替代方案:RelayCommand

如 Karl Shifflet 所示,一個強烈建議的方法是 RelayCommand。它定義了一個在呼叫時執行的操作。

RelayCommand 的範例實作:

<code class="language-csharp">public class RelayCommand : ICommand
{
    private readonly Predicate<object> _canExecute;
    private readonly Action<object> _execute;

    public RelayCommand(Predicate<object> canExecute, Action<object> execute)
    {
        _canExecute = canExecute;
        _execute = execute;
    }

    // ICommand 实现...

}</code>
登入後複製

此實作簡化了指令創建,如下例所示:

<code class="language-csharp">public class MyViewModel
{
    public ICommand DoSomethingCommand =>
        new RelayCommand(
            p => this.CanDoSomething(),
            p => this.DoSomeImportantMethod());
}</code>
登入後複製

其他資源:

• Josh Smith 的「模式 - 使用 MVVM 設計模式的 WPF 應用程式」提供了對 RelayCommand 方法的進一步見解。

以上是通用 ICommand 或 RelayCommand 是可重複使用 MVVM 指令的最佳方法嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板