2017-12-05 4 views
1

모두 안녕하세요, 저는 사용자가 list.view에서 먼저 선택한 다음 피커에서 선택할 수있는 크로스 플랫폼 앱을 개발 중입니다. listview가 잘 작동하고, 이제는 피커에서 작업하고 있지만 문제가 발생했습니다.버튼 누름 이벤트 후 피커 표시

"picker.SelectedIndexChanged + = (sender, args) =>"목록의 새 요소 선택을 처리하는 데 사용되는 것처럼 보이지만 여기에서 보낸 사람에게 문제가 있습니다. 오류는 "오류입니다. CS0136 '발신자'라는 로컬 또는 매개 변수는 로컬 또는 매개 변수를 정의하기 위해 해당 로컬 범위에서 사용되는 이름이기 때문에이 범위에서 선언 할 수 없습니다."

나는이 오류가 func 자체의 even handler 매개 변수에서 보낸 매개 변수와 관련되어 있음을 알고 있지만 새로운 변수 송신자를 선언하지 않았으므로 어떻게이 오류가 발생합니까? 아래의 코드 (지금은 단지 모의가.이 기본 구현하지만 목록보기에 선택한 내용에 따라 변경됩니다 피커의 내용이다.) 나는 피커에 기대

private void Button_Pressed(object sender, EventArgs e) 
    { 
     Picker picker = new Picker 
     { 
      Title = "Select SubUnit", 
      VerticalOptions = LayoutOptions.Center 
     }; 

     string[] list = new string[] { "1", "2", "3", "4", "5" } ; 


     foreach(string subunit in list) 
     { 
      picker.Items.Add(subunit); 
     } 

     picker.Focus(); 

     picker.SelectedIndexChanged += (sender, args) => 
     { 
      if (picker.SelectedIndex == -1) 
      { 
       //ToDo. Prob unnecessary to handle. 
      } 
      else 
      { 
       string selectedSub = picker.Items[picker.SelectedIndex]; 
      } 
     }; 

    } 

초점을 맞추고 버튼을 누른 후에 사용자가 요소를 선택할 수 있도록합니다. 어떤 아이디어?

지금은 유일한 오류는 보낸 사람 개체에 도착하는 구문 오류이며 기술적으로 포커스가 들어오지 않는 선택자이지만 컴파일이 완료되면 해당 내용을 이해할 수 있다고 확신합니다.

답변

1
이미 현재 범위에 sender을 사용하는

private void Button_Pressed(object sender, EventArgs e) 

당신이 뭔가 독특한

picker.SelectedIndexChanged += (s, args) => 
+0

옙에 sender의 다른 인스턴스 이름을 변경해야 할, 내가 가진이 같은 간단한 일이 될 것입니다 느낌 그. –