2012-05-31 22 views
0

我使用了一系列名爲RelayCommand的命令,它們有一個要執行的函數和一個函數,它返回一個布爾值,告訴你是否可以執行第一個函數。事實是,我大部分時間都在使用lambda表達式()=> true。有沒有什麼表達方式可以讓它更具可讀性?像System.TrueFunction或類似的東西。是否有任何等價於總是真正的lambda表達式?

看到它在上下文中:

this.PasteFromExcelCommand = new RelayCommand(PasteFromExcel, this.OneRowSelected); 
    this.SaveCommand = new RelayCommand(this.SaveSession, CanSave); 
    this.SwitchViewCommand = new RelayCommand(this.SwitchView,() => true); 
    this.ExitCommand = new RelayCommand(this.Exit,() => true); 
+3

您是否有RelayCommand的來源?你嘗試過傳遞'null'嗎?如果我通過'null',我的實現總是返回true。 – Botz3000

+2

有時第二個參數甚至可以選擇,如果沒有設置,它將始終返回true。 – MatthiasG

+0

我沒有想到這一點。 RelayCommand是我的項目的一部分,所以可以實現一個默認返回true的參數版本。謝謝你的提示。 –

回答

1

剛剛創建自己的

static readonly Func<bool> TrueFunc =() => true; 

而且使用它就像這樣

new RelayCommand(this.Exit, TrueFunc); 
2

沒有什麼內置的,但你可以輕鬆地創建自己:

public bool TrueFunc() 
{ 
    return true; 
} 

this.ExitCommand = new RelayCommand(this.Exit, TrueFunc); 
相關問題