2012-11-02 2 views
1

내 스토어 앱에서 검색 계약을 이해하고 작동하는 데 문제가 있습니다. 나는 계약을 사용하는 구조를 설명하는 어떤 종류의 문서 나 안내서를 찾을 수 없었다. (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이 정적 메서드에서는 유효하지 않다고 말했지만 정적 메서드가 필요하다고 생각합니까? 내 문제는 근본적인 논리 오류 일 수 있습니까?

답변

3

http://win8rssreader.codeplex.com/ 마지막으로 그것을 가지고 도와 드리겠습니다! 여기에서 해결책을 찾았습니다. http://jeffblankenburg.com/2012/11/06/31-days-of-windows-8-day-6-search-contract

향후 답변을 찾는 사람들에게 열쇠는 Filter_SelectionChanged 방법 내에서 검색 논리가 있는지 확인하는 것입니다. 이는 내가하지 않았던 것입니다. 위의 링크 안의 가이드를보고 구조에 대한 아이디어를 얻으십시오.

2

개발자 센터에서 Search contract sample을 보았습니까? C#/XAML 버전도 있습니다.

+0

미안하지만, 나는 이것도 해 봤어. 특정 예제의 작동 방식을 볼 수는 있지만, 특히 쿼리가 처리되었다는 것을 증명하기 위해 주로 쿼리를 표시하기 때문에 특히 유용하지 않습니다. 당신은 대신에 페이지에 타이핑했습니다. 검색 결과 페이지의 샘플 결과 집합. –

+0

그 샘플은 좀 희박합니다 ... 그 요령은 OnSearchActivated를 사용하여 새로운 검색 결과 페이지로 이동 한 다음 쿼리 인수를 처리하여 –

+0

에 도달하는 것입니다. [예] 조금만 기울이면 ... OnSearchActivated를 사용하여 새로운 검색 결과 페이지로 이동 한 다음 쿼리 args를 처리하여 결과에 도달하게합니다. 검색 결과 페이지는 원하는 형식으로 표시됩니다. Zubair는 충분히 구현되었으므로 충분히 구현되었으므로 잘 채우지 않을 것입니다. –

0

내 오픈 소스 Win8 RSS 리더 프레임 워크는 검색을 구현 ​​(및 공유) 소스를 볼 수 있습니다 당신은 여전히 ​​질문을 가지고 있다면, 나는

+0

코드를 알려 주셔서 감사합니다. 그것을 보면 어떻게해야하는지에 대한 좋은 통찰력을 얻었습니다 ... 그러나 가장 실망 스럽지만, 결과 목록을 채우는 모든 기본 단계를 거쳤으며 이것이 DefaultViewModel [ "Results" ]'네가 가지고있는! 나는 무엇을 해야할지에 관해서는 완전한 상실감에 처해있다. –

관련 문제