2013-08-16 13 views
6

ListboxItem araç ipucu eklemek istiyorum ancak DisplayMemberPath olduğunda sorun başlatır. Hata mesajı dedi: DisplayMemberPath ve ItemTemplate öğelerini ayarlayamıyor. DisplayMemberPath'i kaldırdığımda, her bir liste öğesindeki araç ipucu çalışıyor. Ancak DisplayMemember'i kaldırmak istemiyorum çünkü ihtiyacım var. Bu problem nasıl çözülür?C# wpf - DisplayMemberPath ve ItemTemplate öğelerini ayarlayamıyor

   <ListBox x:Name="lstToys" Style="{DynamicResource ListBoxStyle1}" ItemsSource="{Binding Strings}" DisplayMemberPath="Toys" MouseDoubleClick="lstToys_MouseDoubleClick"> 
        <ListBox.ItemTemplate> 
         <DataTemplate> 
          <TextBlock Text="{Binding}" ToolTip="Here is a tooltip"/> 
         </DataTemplate> 
        </ListBox.ItemTemplate> 
       </ListBox> 
+0

Bu yolu, DataTemplate Binding – Paparazzi

cevap

13

DisplayMemberPath etkisi, bir TextBlock gösterilen tek bir özelliği için bir şablon. Eğer ayarlarsanız: için

<ListBox x:Name="lstToys" Style="{DynamicResource ListBoxStyle1}" 
     ItemsSource="{Binding Strings}" DisplayMemberPath="Toys"> 
</ListBox> 

O eşdeğerdir: Sadece DisplayMemberPath yolunu kaldırın ve değerini kullanabilir

<ListBox x:Name="lstToys" Style="{DynamicResource ListBoxStyle1}" 
     ItemsSource="{Binding Strings}"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Toys}"/> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

sizin DataTemplate 'ın Binding:

<ListBox x:Name="lstToys" Style="{DynamicResource ListBoxStyle1}" 
     ItemsSource="{Binding Strings}"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Toys}" ToolTip="Here is a tooltip!"/> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

Düzenleme

Bir ToolTip set ama DisplayMemberPath tutmak istiyorsanız, ItemContainerStyle de yapabilirsiniz: Ben buna karşı

<ListBox x:Name="lstToys" Style="{DynamicResource ListBoxStyle1}" 
     ItemsSource="{Binding Strings}" DisplayMemberPath="Toys"> 
    <ListBox.ItemContainerStyle> 
     <Style TargetType="ListBoxItem"> 
      <Setter Property="ToolTip" Value="Here's a tooltip!"/> 
     </Style> 
    </ListBox.ItemContainerStyle> 
</ListBox> 

öneririm. DisplayMemberPath kullanımının, veri şablonunuzdaki karmaşık bir bağlantıdan sizi durdurduğunu unutmayın.

+0

'a yerleştirin, ancak oluşturduğum bazı işlevlere bağlı olduğundan DisplayMemberPath'ı kaldırmak istemiyorum. – user235973457

+0

@ user235973457 Düzenleme bölümüne bakın. DisplayMemberPath öğeniz varsa, yine de bir ItemTemplate öğesini koyamazsınız. Tempellemek için daha karmaşık hale gelirseniz, mantığınızı değiştirmeniz gerekir (DisplayMemberPath'ı görünüm dışında özel mantık için kullanmanın iyi bir fikir olduğunu düşünmüyorum). –

+0

bomba gibi çalışır. Tavsiyeniz için teşekkürler. bunu aklımda tutacağım :) – user235973457