2012-05-18 7 views
8

Devo impostare la proprietà ItemsPanelTemplate di una listbox basata su una proprietà di dipendenza sul controllo. Come faccio a usare DataTemplateSelector per farlo?Selettore di ItemsPanelTemplate in wpf?

ho qualcosa di simile:

<ListBox.ItemsPanel> 
    <ItemsPanelTemplate> 
     <!-- Here I need to replace with either a StackPanel or a wrap panel--> 
    </ItemsPanelTemplate> 
</ListBox.ItemsPanel> 

Grazie

risposta

15

Non c'è un ItemsPanelSelector (probabilmente perché non è un DataTemplate), ma è possibile associare o utilizzare un Trigger

Binding esempio

<ListBox ItemsPanel="{Binding RelativeSource={RelativeSource Self}, 
           Path=Background, 
           Converter={StaticResource MyItemsPanelConverter}}"> 

Trigger in Style esempio

<ListBox ItemsSource="{Binding Source={x:Static Fonts.SystemFontFamilies}}"> 
    <ListBox.Style> 
     <Style TargetType="ListBox"> 
      <Setter Property="ItemsPanel"> 
       <Setter.Value> 
        <ItemsPanelTemplate> 
         <StackPanel/> 
        </ItemsPanelTemplate> 
       </Setter.Value> 
      </Setter> 
      <Style.Triggers> 
       <!-- Your Trigger.. --> 
       <Trigger Property="Background" Value="Green"> 
        <Setter Property="ItemsPanel"> 
         <Setter.Value> 
          <ItemsPanelTemplate> 
           <WrapPanel/> 
          </ItemsPanelTemplate> 
         </Setter.Value> 
        </Setter> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </ListBox.Style> 
</ListBox> 
+0

Great..Thanks for provide code sample ... Questo mi ha davvero aiutato molto. Mi piace il mio amico. – user1202434

0

sto pensando il percorso migliore qui sarebbe quella di utilizzare uno stile per la ListBox e impostare trigger che cambiano l'ItemsPanel in base alla DependencyProperty voi riferimento.

Problemi correlati