프로그래밍 방식으로 입력 컨트롤을 만드는 시나리오가 있습니다.메시징 센터 xamarin 양식을 사용하여 현재 개체 값을 설정합니다.
foreach (var control in FormInfo.FormElementsInfo)
{
case "textbox":
//Some code
break;
case "dropdown":
Entry objDropdown = new Entry();
objDropdown.HeightRequest = 40;
objDropdown.StyleId = Convert.ToString(control.ElementId);
objDropdown.SetBinding(Entry.TextProperty, "ElementValue",BindingMode.TwoWay);
objDropdown.BindingContext = control;
layout.Children.Add(objDropdown);
MessagingCenter.Subscribe<Picklists, string>(objDropdown, "PicklistSelected", (sender, arg) =>
{
objDropdown.Text = arg;
// I tried this too as this is two way binding. It didn't show the value.
//control.ElementValue = arg;
});
break;
}
내가 항목을 클릭하면 목록보기가 열립니다. 목록보기에서 옵션을 선택하면 해당 데이터가 항목에 채워집니다. 하지만 현재 항목에서만 선택된 값이 표시되지만 모든 항목의 값이 변경됩니다.
이 상황을 피하는 방법. 선택한 값이 현재 항목에만 채워지 길 원합니다.
의견을 보내 주시면 감사하겠습니다. 고맙습니다.
=== 더 명확 질문 =====
우리가 항목의 n 개의 2 방법은 바인딩 프로그램 제어 만드는 경우. 다른 페이지에서 항목을 선택할 때 단일 항목 값을 변경할 수 있습니까? 그렇다면 어떻게 이것을 달성 하는가?
당신은 단 하나의 사례에 대해서만 사례를 보여주고 있습니다. 모든 항목이 동일한 값으로 데이터 바인딩되어 있습니까? 그들 모두가 같은 가치에 묶여 있다면 나는 그들 모두가 변화를 반영 할 것으로 기대합니다. –
@Joshua foreach (FormInfo.FormElementsInfo의 var 컨트롤) \t \t \t {// 위의 사례 문} 위의 case 문은 for for 루프 내에 있고 모든 것이 동일합니다. 각 항목은 Control이라는 별도의 개체에 바인딩됩니다. 메시징 센터 대신 델리게이트를 사용하려고했는데 그 시나리오도 마찬가지였습니다. – Dev
전체 기능을 게시 할 수 있습니까?나머지 구현을 보지 않고 루프가 모든 컨트롤을 반복한다고 가정 할 수 있습니다. 목록에서 "선택한"항목에 연결하는 방법을 알 수 없습니다. for 루프에서 바인딩을 업데이트하면 안된다. 그 전에 바인드 된 경우 값이 갱신되어야합니다. –