我有一个定制风格的Combobox工作正常。它放在usercontrol中并绑定到数据结构。我使用DisplayMemberPath只显示Combobox TextBox中的一个元素。 ComboBox样式取自MSDN并多次使用。所以这里没有显示。
<UserControl x:Class="wpf.projext1.MyComboBox"
x:Name="MyControl"
...
<ComboBox Style="{StaticResource ComboBoxStyle}"
Text="{Binding ElementName=MyControl, Path=Text}"
IsEditable="True"
IsTextSearchEnabled="False"
StaysOpenOnEdit="True"
ItemsSource="{Binding ElementName=MyControl, Path=MyItemsSource}"
DisplayMemberPath="Name"
</ComboBox
我在填充输出窗口时收到以下恼人的错误消息:
System.Windows.Data Error: 25 : Both 'ContentTemplate' and 'ContentTemplateSelector' are set; 'ContentTemplateSelector' will be ignored. ComboBoxItem:'ComboBoxItem' (Name='')
如果我遗漏了
DisplayMemberPath="Name"
...没有显示关于错误25的调试输出。但我绝对需要DiplayMemberPath =“名字”! 你有想法解决这个问题吗?
答案 0 :(得分:12)
您无法同时设置DisplayMemberPath
和ItemTemplate
。
DisplayMemberPath
用于告诉ItemsControl在显示对象时要显示的属性。如果您已经传递了自定义ItemTemplate
,则设置此字段没有任何意义,因为您可以选择如何来显示该ItemTemplate中的对象。
由于MSDN的默认Combobox样式也设置了ItemTemplate,这可能是导致错误的原因。
答案 1 :(得分:6)
已解决:使用TextSearch附加属性,无论是否启用了TextSearch!
TextSearch.TextPath="Name"