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