C# WPF-使用DataTemplate时通过键入来选择ComboBox值
我在wpf中有一个组合框,它绑定到某个属性(另一个对象)。因为我需要显示我在combobox中使用的DataTemplate对象的两个属性。现在当combobox处于焦点时,我不能通过键入几个起始字母来选择一些值(如果没有DataTemplate,这是可能的)C# WPF-使用DataTemplate时通过键入来选择ComboBox值,c#,wpf,combobox,datatemplate,C#,Wpf,Combobox,Datatemplate,我在wpf中有一个组合框,它绑定到某个属性(另一个对象)。因为我需要显示我在combobox中使用的DataTemplate对象的两个属性。现在当combobox处于焦点时,我不能通过键入几个起始字母来选择一些值(如果没有DataTemplate,这是可能的) 设置为应搜索的属性 更新 由于abvove解决方案似乎不适合您,请尝试手动设置容器的搜索文本: <ComboBox.ItemContainerStyle> <Style TargetType="{x:Ty
设置为应搜索的属性
更新由于abvove解决方案似乎不适合您,请尝试手动设置容器的搜索文本:
<ComboBox.ItemContainerStyle>
<Style TargetType="{x:Type ComboBoxItem}">
<Setter Property="TextSearch.Text" Value="{Binding Tip}" />
</Style>
</ComboBox.ItemContainerStyle>
将DisplayMemberPath添加到应进行查找的属性中
即使存在itemtemplate,设置DisplayMemberPath对我也有效。根据评论讨论,有效的解决方案是在
组合框中添加IsTextSearchEnabled=“True”
和TextSearch.TextPath=“Tip”
例如(重新编写问题代码示例-删除一些对示例代码不有用的代码以降低复杂性)
免责声明:我不是原作者。这个答案是根据现有评论编造的。应将答案归因于世卫组织的帖子,该答案的大部分细节见评论。我测试了它,并验证了它在我(类似)的环境中工作-问题。你能给我举个例子看看它会是什么样子吗?Tnx@HLC这也不起作用:(有没有其他方法可以在不使用DataTemplate的情况下打印这两个值?@mersadk:这很奇怪,我看不出有什么问题。我经常使用它,但从未发现问题。您是否知道TextSearch.TextPath不是绑定,而是属性的名称?声明必须是:TextSearch.TextPath=“Tip”。对于请求的备选方案:最简单的方法是重写ToString(),并返回已连接的字符串。另一种尝试是使用多重绑定并仅使用一个文本块,但我怀疑这是否有帮助。@HLC我知道这一点,并且以这种方式使用,但没有帮助。@HLC最终找到了一个解决方案。我添加了这个解决方案,它成功了。我真的不知道为什么第一次不起作用。Tnx
<ComboBox.ItemContainerStyle>
<Style TargetType="{x:Type ComboBoxItem}">
<Setter Property="TextSearch.Text" Value="{Binding Tip}" />
</Style>
</ComboBox.ItemContainerStyle>
<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>