2

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 はオプションのバーコード バッジ リーダー用です。

4

2 に答える 2