MultiBinding を使用する ItemTemplate を使用している編集可能なコンボボックスがあります。コンボボックスが展開されたときに表示されるアイテムは、期待どおりに表示されます。ただし、項目を選択すると、表示されるテキストは代わりにオブジェクト タイプになります。ToString() のオーバーライドを提案する投稿を見たことがありますが、可能であれば避けたいと思います。
私がバインドされているオブジェクトは、UserDetail オブジェクトのコレクションです。特に、UserDetail には、ComboBox の各項目の文字列として表示されている First と Last Name と BarcodeID があります。選択した項目と同じ文字列を表示したい。代わりに、私が見ているのはMyNameSpace.UserDetail です
これが私のコンボボックスのxamlです。どこが間違っているのか教えてください:
<ComboBox IsEditable="True" IsReadOnly="False" Name="myUser"
TextBoxBase.TextChanged="myCombo_TextChanged"
SelectionChanged="myCombo_SelectionChanged">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{1}, {0}, {2}">
<Binding Path="FirstName" />
<Binding Path="LastName" />
<Binding Path="BarcodeId" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
参考までに、BarcodeID はオプションのバーコード バッジ リーダー用です。