新手问题。在下面的组合框中,下拉列表会根据DataTemplate正确显示公司名称和电话号码。但是,从下拉列表中选择一个项目(通过鼠标)仅在显示对象名称时重新开始:
Stargate_V.DataService.View_Small_Company
未显示所选公司名称和电话号码。我做错了什么?
<ComboBox
ItemsSource="{Binding PrimaryInsurance.Companies}"
ItemTemplate="{StaticResource CompanyTemplate}"
IsEditable="True"
IsTextSearchEnabled="True"
Height="20" HorizontalAlignment="Left" Margin="375,235,0,0" VerticalAlignment="Top" Width="198" />
CompanyTemplate是:
<DataTemplate x:Key="CompanyTemplate">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Companyname}" Width="240"/>
<TextBlock Text="|" Width="10"/>
<TextBlock Text="{Binding Phone}" Width="80" />
</StackPanel>
</DataTemplate>
TIA
答案 0 :(得分:1)
您遇到的问题是将复杂类型(即Class)与 DataTemplate 结合使用, ComboBox 具有 IsEditable 设为true。将 IsEditable 设置为true时, ComboBox 不知道要用于搜索的属性,因此只需在对象上调用 ToString 并显示结果。要解决此问题,您需要将 TextSearch.TextPath 设置为要用于搜索的对象的属性名称。完成后,它将在选择框中显示该属性,而不是 ToString 的结果。如果您要搜索对象上的 Companyname 属性,则下面是您的XAML应该是什么样子。
<ComboBox
ItemsSource="{Binding PrimaryInsurance.Companies}"
ItemTemplate="{StaticResource CompanyTemplate}"
IsEditable="True"
IsTextSearchEnabled="True"
TextSearch.TextPath="Companyname"
Height="20" HorizontalAlignment="Left" Margin="375,235,0,0" VerticalAlignment="Top" Width="198" />