2012-05-18 14 views
8

Necesito establecer la propiedad ItemsPanelTemplate de un listbox basado en una propiedad de dependencia en el control. ¿Cómo uso DataTemplateSelector para hacer eso?ItemsPanelTemplate Selector in wpf?

tengo algo como:

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

Gracias

Respuesta

15

no hay una ItemsPanelSelector (probablemente porque no es un DataTemplate) pero se puede enlazar o usar un ejemplo Trigger

Binding

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

Trigger en Style ejemplo

<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

Genial ... Gracias por proporcionar la muestra de código ... Eso realmente me ayudó mucho. Pulgares arriba mi amigo. – user1202434

0

Estoy pensando que la mejor ruta en este caso sería utilizar un estilo para su cuadro de lista y establecer los factores desencadenantes que cambiar el ItemsPanel basado en la propiedad de dependencia que referencia.

Cuestiones relacionadas