6

正常に動作するカスタムスタイルのコンボボックスがあります。これはユーザーコントロール内に配置され、データ構造にバインドされます。DisplayMemberPathを使用して、コンボボックステキストボックスに1つの要素のみを表示します。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 = "Name"が必要です!これを修正するアイデアはありますか?

4

2 に答える 2

17

両方DisplayMemberPathItemTemplate同時に設定することはできません。

DisplayMemberPathオブジェクトを表示するときに表示するプロパティをItemsControlに指示するために使用されます。すでにカスタムを渡している場合は、そのItemTemplate内でオブジェクトを表示する方法ItemTemplateを選択できるため、このフィールドを設定しても意味がありません。

MSDNのデフォルトのコンボボックススタイルでもItemTemplateが設定されるため、これがエラーの原因である可能性があります。

于 2013-03-27T09:21:17.327 に答える
9

解決済み:TextSearchが有効になっているかどうかに関係なく、TextSearch添付プロパティを使用してください。

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