2010-07-13 8 views
1

Je veux afficher plusieurs colonnes dans la zone de liste. J'ai mentionné le lien suivant Using WrapPanel and ScrollViewer to give a multi-column Listbox in WPF.Listbox avec plusieurs colonnes WPF

Problème:

Je veux faire défiler le contenu en utilisant le bouton de répétition. Comment contrôler la barre de défilement de la liste à l'aide du bouton.

code:

<ListBox Name="lbTrack" ScrollViewer.VerticalScrollBarVisibility="Disabled" ItemsSource="{Binding}"> 
         <ListBox.ItemTemplate> 
          <DataTemplate> 
           <StackPanel> 
            <TextBlock FontSize="14" Margin="10" Text="{Binding TrackName}" />         </StackPanel> 
          </DataTemplate> 
         </ListBox.ItemTemplate> 
         <ListBox.ItemsPanel> 
         <ItemsPanelTemplate> 
          <WrapPanel IsItemsHost="True" Orientation="Vertical"></WrapPanel> 
         </ItemsPanelTemplate> 
         </ListBox.ItemsPanel> 
        </ListBox> 

Répondre

2

Oui, cela fonctionnera bien. Y a-t-il un problème avec cela?

EDIT: En réponse à la question mise à jour ... Afin de faire défiler le programme ListBox vous pouvez utiliser le cadre UI Automation. Ci-dessous un code Silverlight que j'ai trouvé qui devrait fonctionner pour WPF aussi bien.

var automationPeer = FrameworkElementAutomationPeer.FromElement(element) ?? 
        FrameworkElementAutomationPeer.CreatePeerForElement(element); 

var scrollProvider = automationPeer.GetPattern(PatternInterface.Scroll) as IScrollProvider; 
if (scrollProvider != null) { 
    scrollProvider.Scroll(horizontalScrollAmount, verticalScrollAmount); 
} 

Il peut également être possible d'obtenir ce travail en pointant le ScrollBar.LineLeftCommand et ScrollBar.LineRightCommand au ScrollViewer niché dans le modèle de la zone de liste mais je n'a pas pu obtenir ce travail et je ne sais pas si vous pouviez fais ça sans code de toute façon.