2015-01-15 11 views
0

다음은 내 코드입니다 대리자 형식이 아니기 때문에 '문자열을'입력 람다 식을 변환 할 수 없습니다와 나는 모두 System.LinqSystem.Data을 포함 않았고, 나는 여전히이 오류를 얻을 :은 RelayCommand 모델

Cannot convert lambda expression to type 'string' because it is not a delegate type RelayCommand Model

을 나는 꽤 오랫동안 웹 사이트 전체를 검색해 왔지만 여전히 원격으로 유용한 것을 찾지 못했습니다. 모든 제안은 매우 감사하겠습니다.

class MainViewModel:ViewModelBase 
{ 


    private string _location; 
    private bool _agree; 
    private MyRelayCommand _relayCommand; 
    public MainViewModel() 
    { 
     _relayCommand = new MyRelayCommand(
      new Action(() => Install()), 
      () => true); 
    } 

    public void Install() 
    { 

    } 

    public string Location 
    { 
     get { return _location; } 
     set 
     { 
      if (_location == value) 
       return; 

      //RaisePropertyChanging(() => Location); 
      _location = value; 
      RaisePropertyChanged(() => Location); 

      _relayCommand.RaiseCanExecuteChanged(); 

     } 
    } 

    public bool Agree 
    { 
     get { return _agree; } 
     set 
     { 
      if (value == _agree) 
       return; 
      //RaisePropertyChanging(() => Agree); 
      _agree = value; 
      RaisePropertyChanged(() => Agree.ToString); 

      _relayCommand.RaiseCanExecuteChanged(); 

     } 
    } 


    public ICommand InstallCommand 
    { 
     get { return _relayCommand; } 
    } 

답변

3

입력하신 표현은 유효한 행동이 아닙니다. () => 이후의 식은 string이 아니고 Action이 아닌 값을 반환합니다. 당신이 프리즘을 사용하는 경우

RaisePropertyChanged(() => Agree.ToString()); 

을 또는 :

이 시도

RaisePropertyChanged(() => Agree); 

나는 어쩌면 당신은 그냥 필요 RaisePropertyChanged가 변경된 속성의 이름을 기대하는,하지만 기대 :

RaisePropertyChanged("Agree"); 

RaisePropertyChanged을 .NET 4.5 CallerMemberName 속성이므로 속성 이름을 변경하지 않아도됩니다.

RaisePropertyChanged([CallerMemberName] string callerMember = null) 
{ } 

다음 Action에서 호출 :

RaisePropertyChanged(); 
+1

RaisePropertyChanged (RPC) Prism''에서 올 수있는 경우는) 동의'RaisePropertyChanged() =>이어야한다'대신. 그래도 질문에 'RPC'방법에 대한 정보가 부족합니다. – Default

+0

@Default : Thanks. 그것은 실제로 가능합니다. –

+0

실제로'Location' 속성을 살펴보면'RaisePropertyChanged (() Location>)와 비교할 것입니다; – Default