C# 在显示两列的WPF组合框中搜索

C# 在显示两列的WPF组合框中搜索,c#,wpf,mvvm,combobox,C#,Wpf,Mvvm,Combobox,我必须在显示WPF MVVM应用程序中两列的WPF组合框中启用搜索 下面是我的代码,它显示了两列,如:First Name-Last Name <ComboBox Grid.Column="3" Grid.Row="15" Height="Auto" HorizontalAlignment="Stretch" Name="cmbName" VerticalAlignment="Stretch" SelectedIte

我必须在显示WPF MVVM应用程序中两列的WPF组合框中启用搜索

下面是我的代码,它显示了两列,如:First Name-Last Name

    <ComboBox Grid.Column="3" Grid.Row="15" Height="Auto" HorizontalAlignment="Stretch" 
                Name="cmbName" VerticalAlignment="Stretch"
                SelectedItem="{Binding Name, Mode=TwoWay}"
                ItemsSource="{Binding GetAllName}"
                IsTextSearchEnabled="True">

        <ComboBox.ItemTemplate>
            <DataTemplate>
                <TextBlock DataContext="{Binding}">
                        <TextBlock.Text>
                            <MultiBinding StringFormat="{}{0} - {1}">
                                <Binding Path="FirstName" />
                                <Binding Path="LastName" />
                            </MultiBinding>
                        </TextBlock.Text>
                </TextBlock>
            </DataTemplate>
        </ComboBox.ItemTemplate>
    </ComboBox>

我认为在这种情况下,IsTextSearchEnabled没有发挥任何作用


有什么帮助吗?

你似乎有点困惑。首先,您没有在组合框中显示两列,而是显示两个字段值。。。也许你应该编辑你的标题

其次,我不认为您完全理解
IsTextSearchEnabled
属性的用法。然而,你是正确的,使用这个属性,因为你已经是一事无成。从MSDN上的页面:

获取或设置一个值,该值指示是否在ItemsControl实例上启用TextSearch

从MSDN上的页面:

此类用于将字符串分配给控件集合中的项。为集合中的每个项分配一个字符串可以实现两个目标。它指定选择项目时要显示的文本,并允许用户通过键入指定的字符串来选择项目

例如,假设组合框包含图像对象的集合,其中一个是狗的图像。如果将字符串“Dog”指定给该项,则用户可以通过在组合框的文本框中键入单词来选择狗。一旦用户输入足够的单词以将其与选择中的其他项目区分开来,就会选择狗的图像。如果组合框上的IsEdit设置为true,“Dog”将出现在文本框中

通过在控件上使用TextSearch.TextPath属性或在控件集合中的每个项上设置text属性,可以指定标识项的文本。设置这些属性之一可确保不显示意外文本。如果在控件的集合项上设置Text属性,则将忽略TextPath属性。如果将TextPath属性设置为不是实际属性名称的值,则会忽略TextPath


在这种情况下,可以使用TextSearch.TextPath

<ComboBox Grid.Column="3" Grid.Row="15" Height="Auto" HorizontalAlignment="Stretch" 
                Name="cmbName" VerticalAlignment="Stretch"
                SelectedItem="{Binding Name, Mode=TwoWay}"
                ItemsSource="{Binding GetAllName}">
        <TextSearch.TextPath>FirstName</TextSearch.TextPath>
        <ComboBox.ItemTemplate>
            <DataTemplate>
                <TextBlock DataContext="{Binding}">
                        <TextBlock.Text>
                            <MultiBinding StringFormat="{}{0} - {1}">
                                <Binding Path="FirstName" />
                                <Binding Path="LastName" />
                            </MultiBinding>
                        </TextBlock.Text>
                </TextBlock>
            </DataTemplate>
        </ComboBox.ItemTemplate>
    </ComboBox>

名字

“我必须启用搜索”-您想要实现什么搜索功能?是否要根据组合框中的选择筛选ListView或其他控件中的数据?这就是我要查找的。谢谢。