我在我的应用程序中使用了一个组合框,我用这样的类填充它:
namespace Foo.Bar{
public class Item
{
public string lastName;
public string firstName;
public Foo theMeatyPart;
}
}
Run Code Online (Sandbox Code Playgroud)
我可以使用 itemTamplate 用“lastName, firstName”填充下拉列表,但选定的值显示为“Foo.Bar.Item”。如何将相同的模板应用于 selectedItem 并且在不覆盖 Item 的 ToString 方法的情况下使搜索功能正常工作?
这是xaml:
<Style x:Key="SearchComboStyle" TargetType="ComboBox">
<Style.Setters>
<Setter Property="Width" Value="150"></Setter>
</Style.Setters>
</Style>
<DataTemplate x:Key="SearchComboItemTemplate" >
<TextBlock DataContext="{Binding}">
<TextBlock.Text>
<MultiBinding StringFormat="{}{0}, {1}">
<Binding Path="lastName"/>
<Binding Path="firstName"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
<ComboBox ItemTemplate="{StaticResource SearchComboItemTemplate}" Style="{StaticResource SearchComboStyle}"
ItemsSource="{Binding Path=PhysiciansList, RelativeSource={RelativeSource AncestorType=local:ExamViewerControl, AncestorLevel=1}}" IsTextSearchEnabled="True" IsTextSearchCaseSensitive="False" IsEditable="True" TextSearch.TextPath="Person.LastName" />
Run Code Online (Sandbox Code Playgroud)
更新: 看起来你需要设置SelectionBoxItemTemplate.
您可以使用DisplayMemberPath或TextSearch.TextPath来启用搜索,而无需修改 ToString()。