6

我有一个自定义样式的组合框,效果很好。它被放置在用户控件内并绑定到数据结构。我使用 DisplayMemberPath 在 Combobox TextBox 中只显示一个元素。ComboBox Style 取自 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="Name"!你有解决这个问题的想法吗?

4

2 回答 2

17

DisplayMemberPath您不能同时设置两者ItemTemplate

DisplayMemberPath用于告诉 ItemsControl 在显示对象时显示哪个属性。如果您已经传递了 custom ItemTemplate,则设置此字段没有任何意义,因为您可以选择如何在该 ItemTemplate 中显示对象。

由于 MSDN 中的默认 Combobox 样式也设置了 ItemTemplate,这可能是错误的原因。

于 2013-03-27T09:21:17.327 回答
9

已解决:无论是否启用 TextSearch,都使用 TextSearch 附加属性!

TextSearch.TextPath="Name"
于 2013-03-27T10:16:11.667 回答