我在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>
答案 0 :(得分:3)
将TextSearch.TextPath
设置为应搜索的属性。
<强>更新强>
因为似乎不适用于您的解决方案,请尝试手动设置容器的搜索文本:
<ComboBox.ItemContainerStyle>
<Style TargetType="{x:Type ComboBoxItem}">
<Setter Property="TextSearch.Text" Value="{Binding Tip}" />
</Style>
</ComboBox.ItemContainerStyle>
答案 1 :(得分:0)
将DisplayMemberPath添加到应在其上进行查找的属性。
即使存在itemtemplate,设置DisplayMemberPath也适用于我。
答案 2 :(得分:0)
根据评论讨论,有效的解决方案是在IsTextSearchEnabled="True"
代码中添加TextSearch.TextPath="Tip"
和ComboBox
。
例如(重写问题代码示例 - 删除一些对示例代码无用的内容以降低复杂性)
<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发布评论的大部分答案详情。{3}}我测试它并验证这在我的(类似)环境中是有效的 - 问题。