2013-06-03 12 views
6

Jestem zmuszony poprosić o pomoc, a ja nie jestem w stanie sam tego rozgryźć. Pracuję nad aplikacją pulpitu WPF-XAML, w której GUI generowane jest głównie dynamicznie.WPF XAML WrapPanel ListBox z rzędu

Moje zapytanie dotyczy stylizacji WrapPanel z elementami ListBox.

Proszę znaleźć kawałek kodu z moim usercontrol (.xaml):

<DockPanel x:Name="xResultPanel"> 
    <ListView x:Name="bResultPanel" ItemsSource="{Binding ResultList, UpdateSourceTrigger=PropertyChanged}"> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
     <Expander Header="{Binding GroupName}" Style="{DynamicResource FeatureExpander2}"> 
      <WrapPanel ItemWidth="140" Orientation="Horizontal"> 
      <ListBox x:Name="ListOfTiles" ItemsSource="{Binding VideoSamples}"> 
       <ListBox.ItemTemplate> 
       <DataTemplate> 
        <StackPanel Width="120" Margin="10" HorizontalAlignment="Left"> 
        <Image /> 
        <TextBlock /> 
        </StackPanel 
       </DataTemplate> 
       </ListBox.ItemTemplate> 
      </ListBox> 
      </WrapPanel> 
     </Expander> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
    </ListView> 
</DockPanel> 

Powyższy kod zwróci przedmioty ListBox nie przedstawiony w wierszu, ale każdy element w nowym wierszu. Próbowałem ustawić MinWidth, Width etc dla WrapPanel i ListBox, ale bez wyniku.

Z góry dziękuję za wszystkie powiązane porady, jak zmusić WrapPanel do wypełnienia zawartości poziomo.

Odpowiedz

11

Problem polega na tym, że Twój WrapPanel ma tylko jedno dziecko: The ListBox. Oznacza to, że układanie odbywa się za pomocą szablonu ItemsPanel z ListBox.

Spróbuj to zamiast:

<Expander Header="{Binding GroupName}" Style="{DynamicResource FeatureExpander2}"> 
     <ListBox x:Name="ListOfTiles" ItemsSource="{Binding VideoSamples}"> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
      <StackPanel Width="120" Margin="10" HorizontalAlignment="Left"> 
       <Image /> 
       <TextBlock /> 
      </StackPanel> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
     <ListBox.ItemsPanel> 
      <ItemsPanelTemplate> 
      <WrapPanel /> 
      </ItemsPanelTemplate> 
     </ListBox.ItemsPanel> 
     </ListBox> 
    </Expander> 
+0

Dzięki tak dużo, Danielu! To rozwiązało mój problem :) – zyjespox

Powiązane problemy