내 스토어 앱에서 검색 계약을 이해하고 작동하는 데 문제가 있습니다. 나는 계약을 사용하는 구조를 설명하는 어떤 종류의 문서 나 안내서를 찾을 수 없었다. (MSDN, 검색 계약 샘플 및 빌드 비디오의 빠른 시작을 살펴 봤지만 자바 스크립트 만 처리합니다.)실제로 검색 계약을 어떻게 구현합니까? (C#)
지금까지 쿼리를 실행하고 목록을 가져 왔습니다. 개체) 내 검색 계약 페이지로, 그리고 거기에서 defaultviewmodel.results, 할당 할 시도하지만 입력 한 쿼리를 아무 것도 페이지에 나 나타납니다. 내가 설정할 필요가있는 다른 것이 있습니까? 이 (발췌) 다음과 내가 지금까지이하는대로 :
App.xaml.cs를
protected override void OnSearchActivated(Windows.ApplicationModel.Activation.SearchActivatedEventArgs args)
{
SearchCharmResultsPage.Activate(args.QueryText, args.PreviousExecutionState);
SearchCharmResultsPage.ProcessSearchQuery(args.QueryText);
}
public async static void ProcessSearchQuery(string queryString)
{
try
{
StorageFile file = await ApplicationData.Current.LocalFolder.GetFileAsync("recipeCustomObject Debug.WriteLine("Database exists, connecting");
SQLiteAsyncConnection connection = new SQLiteAsyncConnection("CustomObject_db");
List<CustomObject> resultsList = new List<CustomObject>();
string query = "SELECT * FROM CustomObjectDB";
resultsList = await connection.QueryAsync<RecipeRecord>(query);
}
catch (FileNotFoundException fnfExc)
{
Debug.WriteLine("FNFEXC: " + fnfExc.ToString());
}
}
나는 내가이 있는지 확실하지 않습니다하지만 여기서 문제는, 거짓말을 가능하다고 생각, 또는 그것을 변경하는 방법. resultsList 목록이 여기에 생성되었지만 비동기 메서드이기 때문에 메서드에서 반환 할 수 없습니다. 이 때문에 LoadStateMethod에 this.DefaultViewModel[Results] = resultsList;
을 할당하려고하면 객체가 존재하지 않는다고 생각합니다. 프로그램이 아무런 오류도 발생시키지 않는다고 생각합니다. ProcessSearchQuery
메서드에서 같은 줄을 추가하려고하면 this
이 정적 메서드에서는 유효하지 않다고 말했지만 정적 메서드가 필요하다고 생각합니까? 내 문제는 근본적인 논리 오류 일 수 있습니까?
미안하지만, 나는 이것도 해 봤어. 특정 예제의 작동 방식을 볼 수는 있지만, 특히 쿼리가 처리되었다는 것을 증명하기 위해 주로 쿼리를 표시하기 때문에 특히 유용하지 않습니다. 당신은 대신에 페이지에 타이핑했습니다. 검색 결과 페이지의 샘플 결과 집합. –
그 샘플은 좀 희박합니다 ... 그 요령은 OnSearchActivated를 사용하여 새로운 검색 결과 페이지로 이동 한 다음 쿼리 인수를 처리하여 –
에 도달하는 것입니다. [예] 조금만 기울이면 ... OnSearchActivated를 사용하여 새로운 검색 결과 페이지로 이동 한 다음 쿼리 args를 처리하여 결과에 도달하게합니다. 검색 결과 페이지는 원하는 형식으로 표시됩니다. Zubair는 충분히 구현되었으므로 충분히 구현되었으므로 잘 채우지 않을 것입니다. –