2012-05-11 12 views
1

我有一個可編輯的組合框,我使用的是使用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適用於可選的條形碼胸章閱讀器。

回答

0

只能將文本數據綁定到具有IsEditable = true的組合框。

刪除IsEditable="True"

更多信息,請參見here

+0

由於我使用的是USB條形碼閱讀器,我想我需要組合框,因爲條形碼閱讀器看上去就像一個鍵盤組合框可編輯。順便說一句,我代表另一位開發人員提出這個問題。我自己並沒有以這種方式使用條形碼閱讀器。僅供參考,我曾嘗試重寫我的EntityFramework實體上的ToString()方法,並按預期工作。我可能不得不考慮一種擴展方法,假設我可以在擴展方法中進行覆蓋。 – KyleLib

+0

你試過了嗎? IsEditable並不意味着你的想法。 –

+0

Apologees放棄這一點。該項目最終取消。 – KyleLib