WPF -使用数据模板时,通过键入选择组合框值
本文关键字:选择 组合 数据 WPF | 更新日期: 2023-09-27 18:05:02
我在wpf中有一个组合框,它绑定到一些属性(另一个对象)。因为我需要显示那个对象的两个属性,我在组合框内使用了DataTemplate。现在,当组合框处于焦点时,我不能通过输入几个起始字母来选择一些值(没有DataTemplate是可能的)。
<ComboBox Height="23" HorizontalAlignment="Left" Margin="104,14,0,0" Name="tipDokumentaCombo" VerticalAlignment="Top" Width="241" TabIndex="0" ItemsSource="{Binding Path=TipoviDokumenta}" SelectedValue="{Binding Path=Potvrda.Tip}" SelectedValuePath="Tip" SelectionChanged="tipDokumentaCombo_SelectionChanged">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=Tip}" />
<TextBlock Text=" (" />
<TextBlock Text="{Binding Path=OpisDokumenta}" />
<TextBlock Text=")" />
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
设置TextSearch.TextPath
为需要搜索的属性
因为上面的解决方案似乎不适合您,请尝试手动设置容器的搜索文本:
<ComboBox.ItemContainerStyle>
<Style TargetType="{x:Type ComboBoxItem}">
<Setter Property="TextSearch.Text" Value="{Binding Tip}" />
</Style>
</ComboBox.ItemContainerStyle>
将DisplayMemberPath添加到需要查找的属性中。
设置DisplayMemberPath为我工作,即使itemtemplate存在
根据评论讨论,可行的解决方案是在ComboBox
标签中添加IsTextSearchEnabled="True"
和TextSearch.TextPath="Tip"
。
例如(重写问题代码示例-删除一些对示例代码无用的以降低复杂性)
<ComboBox Name="tipDokumentaCombo" TabIndex="0" ItemsSource="{Binding Path=TipoviDokumenta}" SelectedValue="{Binding Path=Potvrda.Tip}" SelectedValuePath="Tip" SelectionChanged="tipDokumentaCombo_SelectionChanged" IsTextSearchEnabled="True" TextSearch.TextPath="Tip">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=Tip}" />
<TextBlock Text=" (" />
<TextBlock Text="{Binding Path=OpisDokumenta}" />
<TextBlock Text=")" />
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
免责声明:我不是原作者。这个答案是根据现有的评论捏造出来的。归因应该给予@mersadk谁张贴,这个答案的大部分细节在评论中。我对它进行了测试,并验证它在我的(类似的)环境中有效-问题。