我有一个运行良好的视图和 ViewModel。我最近添加了一个 AutocompleteBox(在 WPF 工具包中找到),它允许用户快速查找项目。
我的看法是这样的:
- 一个 ItemsControl,其中包含名为 People 的 CollectionViewSource。完美生成
- 一个自动完成框,其中下拉列表仅显示包含用户在自动完成框中键入的值的项目。效果很好。如果我键入 John,我的 CollectionViewSource 中名为 People 且名称中包含单词 John 的所有人员都会出现在下拉列表中。
我的问题是:当用户从下拉列表中选择他希望看到的项目时,如何过滤我的 ItemsControl?
到目前为止,我在 XAML 中的代码用于绑定数据:
<toolkit:AutoCompleteBox Height="25" Width="400"
Foreground="AliceBlue"
ItemsSource="{Binding People.View}"
ValueMemberPath="Name"
Text="{Binding Name}"
IsTextCompletionEnabled="True"
FilterMode="Contains"
Background="#303030">
<toolkit:AutoCompleteBox.ItemTemplate>
<DataTemplate>
<Grid Width="360" HorizontalAlignment="Left">
<StackPanel Orientation="Vertical" HorizontalAlignment="Left"
VerticalAlignment="Top" Width="300">
<TextBlock Text="{Binding Name}" FontWeight="SemiBold" Foreground="#25A0DA"
FontSize="14" Width="300"/>
<TextBlock Text="{Binding Status}" FontWeight="Normal" Foreground="White"
FontSize="10" Width="300"/>
</StackPanel>
</Grid>
</DataTemplate>
</toolkit:AutoCompleteBox.ItemTemplate>
</toolkit:AutoCompleteBox>
<ItemsControl x:Name="tStack" Grid.Column="0" Grid.Row="1"
ItemsSource="{Binding People.View}"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
BorderThickness="0.5">
</ItemsControl>
itemsControl 是样式化的,其中项目的格式也是模板化/样式化的,但是太长且不具有建设性,无法在此处发布。