我有一個可編輯的組合框,我使用的是使用MultiBinding的ItemTemplate。展開組合框時顯示的項目按照我的預期顯示。但是,選擇某個項目時,顯示的文本是對象類型。我看過一些提示覆蓋ToString()的帖子,但如果可能的話,我想避免這種情況。WPF可編輯組合框與多重約束顯示對象類型時選擇
我綁定的對象是UserDetail對象的集合,其中包括UserDetail的第一個和最後一個名稱以及一個BarcodeID,我將它們顯示爲ComboBox中每個項目的字符串。我想顯示與選定項目相同的字符串。相反,我所看到的是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適用於可選的條形碼胸章閱讀器。
由於我使用的是USB條形碼閱讀器,我想我需要組合框,因爲條形碼閱讀器看上去就像一個鍵盤組合框可編輯。順便說一句,我代表另一位開發人員提出這個問題。我自己並沒有以這種方式使用條形碼閱讀器。僅供參考,我曾嘗試重寫我的EntityFramework實體上的ToString()方法,並按預期工作。我可能不得不考慮一種擴展方法,假設我可以在擴展方法中進行覆蓋。 – KyleLib
你試過了嗎? IsEditable並不意味着你的想法。 –
Apologees放棄這一點。該項目最終取消。 – KyleLib