2013-03-27 31 views
5

Özel olarak çalışan bir Combobox'ım var. Bir usercontrol içine yerleştirilir ve bir veri yapısına bağlıdır. Combobox TextBox'ta yalnızca bir öğe göstermek için DisplayMemberPath kullanıyorum. ComboBox Style, MSDN'den alındı ​​ve birçok kez kullanıldı. Yani burada gösterilmiyor.wpf hata ayıklama hatası System.WIndows.Data Hatası 25

<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 

Ben çıkış penceresini doldurma aşağıdaki can sıkıcı hata mesajı alıyorum: i

DisplayMemberPath="Name" 

dışarı bırakırsanız

System.Windows.Data Error: 25 : Both 'ContentTemplate' and 'ContentTemplateSelector' are set; 'ContentTemplateSelector' will be ignored. ComboBoxItem:'ComboBoxItem' (Name='') 

... hata 25 konuda hiçbir hata ayıklama çıkışı gösterilmektedir. Ama kesinlikle DiplayMemberPath = "İsim" ye ihtiyacım var! Bunu düzeltmek için bir fikrin var mı?

+0

Tarzınızda "ComboBoxStyle", sizin için açılan "ItemTemplate" öğesini ayarlıyor olabilirsiniz. Bu nedenle, bu hata. –

cevap

7

çözümlendi: TextSearch özelliği etkinleştirilmişse TextSearch eklenti özelliğini kullanın!

TextSearch.TextPath="Name" 
+0

Güzel bir geçici çözüm. Burada iyi çalışıyoruz :) –

11

DisplayMemberPath ve ItemTemplate öğelerini aynı anda ayarlayamazsınız.

DisplayMemberPath, nesnelerinizi gösterirken görüntülenecek ItemsControl öğelerini belirtmek için kullanılır. Zaten ItemTemplate özel bir geçiş yapıyorsanız, bu alanı ayarlamak için hiçbir zaman yapmazsınız, öğesini seçerek o ÖğeTemplate içindeki nesneyi nasıl göstereceğini.

MSDN'den gelen varsayılan Combobox stili de bir ItemTemplate'i belirlediğinden, bu büyük olasılıkla hatanın sebebidir.

+0

ComboboxItems'i göstermek için kullanılan bir itemtemplate var. Ayrıca, düzenleme kutusunun içeriğini görüntülemek için kullanılmalıdır? – deafjeff

+0

DisplayMemebrPath'ı ayarladığımda, açılan kutu olması gerektiği gibi çalışır. Onu bıraktığımda, editbox varsayılan (classname) dizesini görüntüler. DisplaymemebrPath ayarı, ComboboxItems için bir Itemtemplate ayarlanması gibi gerçekten yararlı bir şey yapar. Bunu nasıl önereceğini açıklayabilir misin? – deafjeff

+0

Düzenleme kutusunun, Itemtemplate'de tanımlandığı gibi bir ComboboxItem görüntülemediğini eklemeliyim. Onle "İsim" üyesini gösterir. ItemTemplate her öğe için "İsim" "Yaş" "Adres" vb. – deafjeff

İlgili konular