MVVM Light RelayCommand 파라미터
GalaSoft MVVM Light 프레임워크를 사용하여 릴레이 명령에 매개 변수를 전달하는 데 문제가 있습니다.mvvm light의 릴레이 명령 구현에는 lambda 매개 변수가 사용되지 않는다는 것을 알고 있기 때문에, 몇 가지 조사를 실시한 결과 다음과 같은 작업을 통해 사람들이 이 매개 변수를 해결할 수 있는 방법을 찾았습니다.
public RelayCommand ProjMenuItem_Edit
{
get
{
if (_projmenuItem_Edit == null)
{
//This should work....
_projmenuItem_Edit = new RelayCommand(ProjEditNode);
}
return _projmenuItem_Edit;
}
}
private void ProjEditNode(object newText)
{
var str = newText as string;
OrganLocationViewModel sel =
ProjectOrganLocationView.GetExtendedTreeView().GetTopNode();
//Console.WriteLine(sel.OrganDisplayName);
sel.OrganDisplayName = str;
}
그런데 계속 오류가 납니다._projmenuItem_Edit = new RelayCommand(ProjEditNode);
말하자면Argument 1: cannot convert from 'method group' to 'System.Action'
제가 무엇을 빠뜨리고 있나요?
이 방법이 효과가 있을 것 같습니다.
_projmenuItem_Edit = new RelayCommand<object>((txt)=>ProjEditNode(txt));
--편집 --
다음 유형으로 RelayCommand도 정의해야 합니다.
예.
public RelayCommand<string> myCommand { get; private set; }
myCommand = new RelayCommand<string>((s) => Test(s));
private void Test(string s)
{
throw new NotImplementedException();
}
나는 그렇게 생각하지 않는다.RelayCommand()
에는 비어 있지 않은 생성자가 있습니다.잘못된 방법을 쓰려고 하는 거야
RelayCommand가 명령 파라미터를 지원하도록 하려면RelayCommand<T>
여기서 T는 임의의 파라미터 유형입니다.당신의 상황이라면RelayCommand<String>
void(string) 서명이 있는 메서드를 받아들입니다.(그 때문에, 타이프도 강하기 때문에, 추한 오브젝트는 사용하지 않습니다.)
릴레이 명령을 선언하는 또 다른 방법은 코드를 줄이는 데 도움이 됩니다.
public RelayCommand ChartCommand
{
set
{
RelayCommand<string> chartCommand =
new RelayCommand<string>(e => ExecuteChartCommand(e));
}
}
public void ExecuteChartCommand(string vendor)
{
}
언급URL : https://stackoverflow.com/questions/5298910/mvvm-light-relaycommand-parameters
'programing' 카테고리의 다른 글
5행부터 시작하여 헤더를 포함한 python 데이터 프레임에 대한 읽기 성능 향상 (0) | 2023.04.17 |
---|---|
CSV 파일에 큰따옴표 구분 기호 추가 (0) | 2023.04.17 |
Excel이 내 빈 셀이 비어 있지 않다고 알려준다. (0) | 2023.04.17 |
해시 바이트를 VarChar로 변환 (0) | 2023.04.17 |
OS X에서 zsh에서 bash로 전환하고 다시 되돌리시겠습니까? (0) | 2023.04.17 |