2016-09-09 3 views
0

내 앱에서 listview를 만들었으므로 검색 창을 추가하려고합니다. 나는 많은 포럼으로 갔지만 그것을 얻을 수 없다. 나는 AutoSuggestBox을 사용해야 만하지만 정확한 방법은 모르겠다.목록보기 항목의 자동 검색 상자

private void autosuggesttextchanged(AutoSuggestBox sender, AutoSuggestBoxTextChangedEventArgs args) 
    { 
     if (args.Reason == AutoSuggestionBoxTextChangeReason.UserInput) 
     { 
      var filtered = hlist.Where(i => i.name.Contains(this.box.Text)).ToList(); 
      list.ItemsSource = filtered; 
     } 
    } 

내가 이름을 설정할 필요가 있습니다 : 여기

<Grid> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="*"/> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="Auto"/> 
      <ColumnDefinition Width="*"/> 
     </Grid.ColumnDefinitions> 

     <StackPanel Orientation="Horizontal" Grid.Column="1" Padding="15,0,0,0"> 
      <AutoSuggestBox PlaceholderText="Search" TextChanged="autosuggesttextchanged" QuerySubmitted="autosuggestquerysubmitted" SuggestionChosen="autosuggestsuggestionchosen"/> 
     </StackPanel> 

     <ListView x:Name="list" ItemsSource="{Binding Source={StaticResource herolistview}}" ItemClick="itemclicked" IsItemClickEnabled="True" Margin="5,0,0,0" Grid.Row="1" Grid.ColumnSpan="2"> 

      <ListView.ItemTemplate> 
       <DataTemplate> 
        <Grid> 
         <StackPanel Orientation="Horizontal" Padding="0,4"> 
          <Image Height="50" Width="88" Source="{Binding image}"></Image> 
          <TextBlock Text="{Binding name}" HorizontalAlignment="Center" Foreground="White" Padding="8,0,0,0"></TextBlock> 
         </StackPanel> 
        </Grid> 
       </DataTemplate> 
      </ListView.ItemTemplate> 

      <ListView.GroupStyle> 
       <GroupStyle> 
        <GroupStyle.HeaderTemplate> 
         <DataTemplate> 
          <TextBlock Text='{Binding key}' FontWeight="Bold" FontSize="20"/> 
         </DataTemplate> 
        </GroupStyle.HeaderTemplate> 
        <GroupStyle.Panel> 
         <ItemsPanelTemplate> 
          <VariableSizedWrapGrid MaximumRowsOrColumns="2"/> 
         </ItemsPanelTemplate> 
        </GroupStyle.Panel> 
       </GroupStyle> 
      </ListView.GroupStyle> 

     </ListView> 

    </Grid> 
</Grid> 

.cs이

public sealed partial class MainPage : Page 
{ 
    ObservableCollection<mainpageclass> hlist = new ObservableCollection<mainpageclass>(); 


    public MainPage() 
    { 
     this.InitializeComponent(); 
     Filldata(); 
    } 
    void Filldata() 
    { 
     hlist.Add(new mainpageclass { name = "Aba" }); 
     hlist.Add(new mainpageclass { name = "Al" }); 
     hlist.Add(new mainpageclass { name = "Anon" }); 
     hlist.Add(new mainpageclass { name = "An"}); 
     hlist.Add(new mainpageclass { name = "Aren" }); 
     hlist.Add(new mainpageclass { name = "Boe"}); 
     list.ItemsSource = hlist; 
    } 

    private void autosuggesttextchanged(AutoSuggestBox sender, AutoSuggestBoxTextChangedEventArgs args) 
    { 
     if (args.Reason == AutoSuggestionBoxTextChangeReason.UserInput) 
     { 

     } 
    } 

    private void autosuggestquerysubmitted(AutoSuggestBox sender, AutoSuggestBoxQuerySubmittedEventArgs args) 
    { 

    } 

    private void autosuggestsuggestionchosen(AutoSuggestBox sender, AutoSuggestBoxSuggestionChosenEventArgs args) 
    { 

    } 
    } 
} 
+0

지금 코드를 테스트 할 수 없습니다. autosuggesttextchanged 메소드 내에 코드를 작성하여 hlist ObservableCollection 내에서 검색을 수행하십시오. 이 컬렉션은 ListView의 데이터 소스이므로 LINQ를 사용하여 필터링하면 ListView가 새 내용으로 업데이트됩니다. –

답변

1

이 코드를 사용해보십시오 파일 .. 내 코드는 사람이 그 위에 도움이 희망입니다 AutoSuggestBox (x : 이름 = "상자"). 그리고 코드 숨김에서 ItemsSource 속성을 덮어 쓰므로 XAML : ItemsSource = "{Binding Source = {StaticResource herolistview}}"는 쓸모가 없습니다. :-)

+0

비록 작동하지만 문제가 있습니다. autosuggestbox listview에서 문자를 입력 할 때 listview가 입력 된 문자로 업데이트되지만 'f'를 입력하면 listview가 업데이트되지 않는 것과 같은 첫 번째 문자는 업데이트되지 않습니다. 'f'로 시작하는 항목 대신 전체 항목에 'f'문자가있는 항목으로 구성됩니다. 나는 'f'로 시작하는 단어를 초과 지시 할 수 없다. – Ravi

+0

그것은 내 전화기에서 제대로 작동했다. 남자. PC에서 앱을 제거한 다음 배포해야한다고 생각합니다. – Ravi

+0

문제는 대소 문자가 ..입니다. – Ravi

관련 문제