도메인 서비스의 항목을 쿼리하여 ObservableCollection ItemsSource에 바인드 된 AutoCompleteBox가 있습니다. PopulatingEventArgs.Cancel을 True로 설정하여 Jeff Wilcox의 블로그에서 웹 서비스 호출로 채우는 시나리오를 사용했고 컬렉션이 준비되면 ACB에서 PopulateComplete()를 호출합니다.Webservice에서 제안을 다시로드하지 않고 Silverlight AutoCompleteBox 팝업을 다시 엽니 다.
목표는 마우스 오버시 (또는 클릭) 드롭 다운을 다시 열지 만 웹에서 모든 데이터를 다시로드하지 않는 것입니다. 대답은 IsDropDownOpen을 True로 설정하는 것이었던 stackoverflow에 관한 질문을 발견했습니다. 그러나이 경우 ACB 인구가 다시 시작되고 다른 전화가 웹 서비스로 연결됩니다.
물론 사용자가 타이핑을 시작하면 필터링을 다시 수행해야합니다. (예 : "ric"을 입력하고 상자에 "rice"및 "ricin"이 표시되면 쌀을 선택하지만 마음이 바뀌고 같은 컬렉션에서 다른 단어를 선택하려는 경우 "ricin"이라고 말하십시오. 메모리에 "ric"이 포함 된 제안이 이미 있습니다. 다시로드 할 필요가 없습니다.)
IsDropDownOpen을 설정하는 대신 PopulateComplete() 메소드를 호출하는 다른 방법이 있습니다. 이것은 내가 원하는 것과 똑같은 일을하지만 조금만 실패하면 ACB가 포커스를 잃은 후에 드롭 다운이 마우스 오버시에 다시 열리지 않습니다. 심지어 acb 텍스트 상자를 다시 클릭 할 때도 마찬가지입니다.
이 문제가 수정되었거나 ACB에 처음 포커스가있을 때 PopulateComplete() 만 드롭 다운을 다시 여는 이유를 아는 사람이 있습니까? 또는이 메서드를 호출하면 내 드롭 다운이 다시 열리고 해당 IsDropDownOpen 속성을 대신 사용해야합니다 (afaik이 일부 플래그를 사용하여 해당 가짜 populating 이벤트 내 mouseover 및 PopulatingEventArgs.Cancel 호출해야합니다 즉시 PopulateComplete하지만.이 작동하지 않을 경우 (아직 시도하지 않은), PopulateComplete 단순히 호출 할 때 왜?