2013-05-14 13 views

cevap

33

ItemTemplate, veri öğenizin içeriğinin nasıl görüneceğini stil içindir. Veri alanlarını bağlamak, görüntü dizelerini biçimlendirmek vb. Verilerin nasıl sunulduğunu belirler.

ItemContainerStyle, veri öğesinin kabını şekillendirmek içindir. Bir liste kutusunda, bu bir ListBoxItem olur. Burada şekillendirme, seçim davranışı veya arka plan rengi gibi şeyleri etkiler. Ekranın stilini ve UX'ini belirler.

yukarıda bağlantılı ItemContainerStyle için MSDN sayfa, oldukça iyi bir örneği gösteren bazı farklılıklar vardır:

<!--Use the ItemTemplate to set a DataTemplate to define 
     the visualization of the data objects. This DataTemplate 
     specifies that each data object appears with the Proriity 
     and TaskName on top of a silver ellipse.--> 
    <ItemsControl.ItemTemplate> 
    <DataTemplate> 
     <DataTemplate.Resources> 
     <Style TargetType="TextBlock"> 
      <Setter Property="FontSize" Value="18"/> 
      <Setter Property="HorizontalAlignment" Value="Center"/> 
     </Style> 
     </DataTemplate.Resources> 
     <Grid> 
     <Ellipse Fill="Silver"/> 
     <StackPanel> 
      <TextBlock Margin="3,3,3,0" 
        Text="{Binding Path=Priority}"/> 
      <TextBlock Margin="3,0,3,7" 
        Text="{Binding Path=TaskName}"/> 
     </StackPanel> 
     </Grid> 
    </DataTemplate> 
    </ItemsControl.ItemTemplate> 
    <!--Use the ItemContainerStyle property to specify the appearance 
     of the element that contains the data. This ItemContainerStyle 
     gives each item container a margin and a width. There is also 
     a trigger that sets a tooltip that shows the description of 
     the data object when the mouse hovers over the item container.--> 
    <ItemsControl.ItemContainerStyle> 
    <Style> 
     <Setter Property="Control.Width" Value="100"/> 
     <Setter Property="Control.Margin" Value="5"/> 
     <Style.Triggers> 
     <Trigger Property="Control.IsMouseOver" Value="True"> 
      <Setter Property="Control.ToolTip" 
        Value="{Binding RelativeSource={x:Static RelativeSource.Self}, 
          Path=Content.Description}"/> 
     </Trigger> 
     </Style.Triggers> 
    </Style> 
    </ItemsControl.ItemContainerStyle> 
8

DataTemplate için sadece bir sarıcı ortak öğesi stil uygulanabilir böylece ItemContainerStyle farklı veri düzenleri. Ayrıca

, this answer to "DataTemplate vs ItemContainerStyle" den:

Sen ItemTemplate tüm stil yapabilir ama ItemContentStyle farenin üzerinde Saydamlık kontrol VisualStates vardır/engelli/seçili vb

Eğer isterseniz Bu opaklık durumu değişikliklerini değiştirin veya örneğin bir üçgen gibi bir dikdörtgen şeklinden başka bir kapsayıcı şekli istiyorsanız, varsayılan ItemContainerStyle'ı geçersiz kılmanız gerekir.

+2

şiddetle * * metin 'sen ItemTemplate tüm stil yapabileceği daha belirgin hale önermek ama ItemContentStyle, fare üzerinde/devre dışı/seçili durumda Opaklığı kontrol eden VisualStates'e sahiptir ve 'Bu opaklık durumu değişikliklerini değiştirmek isterseniz ya da örneğin üçgen gibi bir dikdörtgen biçiminden başka bir Konteyner şekli istiyorsanız varsayılan ItemContainerStyle.' geçersiz kılmak için sağlanan bağlantıdan kopyalandı; Son zamanlarda intihal üzerinde çatlıyorlardı, bu da bunun görülebileceği bir şeydi. – LittleBobbyTables

+0

Bu yüzden bu bağlantıyı cevabımda ekledim. Şimdi bu siteden alınan daha net yaptık. – Jeff

+0

Gerçekten bir düşüş var mı? Bağlantı adamı referans mı? Lütfen reddetmeden önce ENTIRE yazımı okuyun. – Jeff

İlgili konular