使用C#+ WPF + MVVM我試圖做一個或多或少通用「buttoncommand」級以下級別4在http://www.codeproject.com/Articles/819294/WPF-MVVM-step-by-step-Basics-to-Advance-Level按鈕命令類帶參數
我有一個綁定到observablecollection<mySpecialClass>
和一個按鈕一個DataGrid多數民衆贊成綁定了一個添加行並且沒有任何參數可以正常工作的命令。 但是,我想要有按鈕來插入和刪除網格中的行,這將採取當前活動/選擇行的索引。
我試圖給buttoncommand更改爲以下(改變Action what
到Action<object> what
):
public class ButtonCommandi : ICommand
{
private Action<object> _whattoExecute;
private Func<bool> _whentoExecute;
public ButtonCommandi(Action<object> what, Func<bool> when)
{
_whattoExecute = what;
_whentoExecute = when;
}
public bool CanExecute(object parameter)
{
return _whentoExecute();
}
public event EventHandler CanExecuteChanged;
public void Execute(object parameter)
{
_whattoExecute(parameter);
}
}
}
然而,在我的視圖模型,我嘗試在構造函數來創建類的實例:
public class MyViewModelClass
{
private ButtonCommand _objAppendTerrainPointCommand;
private ButtonCommandi _objInsertTerrainPointCommand;
private MyModelClass _mymodel;
public MyVeiwModelClass()
{
...
_objAppendRowCommand = new ButtonCommand(_mymodel.Append, _mymodel.IsPossibleToAppend);
_objInsertRowCommand= new ButtonCommandi(
delegate(object i) { _mymodel.InsertRow(i); }, _mymodel.IsPossibleToInsert);
...
}
它表示「MyModelClass.InsertRow(int)'的最佳重載方法匹配有一些無效參數」。我嘗試了new ButtonCommandi(..)
的一些不同版本,但似乎無法找到方法。
功能如下:
internal void InsertRow(int idx)
{
_myObsColSpecial.Insert(idx);
}
有沒有人有一個很好的提示怎麼能有這個工作呢? (我對wpf,mvvm和c#都很陌生,據我所知,據我所知,似乎有很多方法可以完成這樣的事情,但自從我開始這樣做以後,最好不要重寫代碼:))
_mymodel.InsertRow((int)i); –