C# WPF-使用DataTemplate时通过键入来选择ComboBox值

C# WPF-使用DataTemplate时通过键入来选择ComboBox值,c#,wpf,combobox,datatemplate,C#,Wpf,Combobox,Datatemplate,我在wpf中有一个组合框,它绑定到某个属性(另一个对象)。因为我需要显示我在combobox中使用的DataTemplate对象的两个属性。现在当combobox处于焦点时,我不能通过键入几个起始字母来选择一些值(如果没有DataTemplate,这是可能的) 设置为应搜索的属性 更新 由于abvove解决方案似乎不适合您,请尝试手动设置容器的搜索文本: <ComboBox.ItemContainerStyle> <Style TargetType="{x:Ty

我在wpf中有一个组合框,它绑定到某个属性(另一个对象)。因为我需要显示我在combobox中使用的DataTemplate对象的两个属性。现在当combobox处于焦点时,我不能通过键入几个起始字母来选择一些值(如果没有DataTemplate,这是可能的)


设置为应搜索的属性

更新
由于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>