2012-11-07 8 views
5

Używam WrapGrid jak itemscontrol w ListView zaprezentować przedmioty poziomo następujący kod XAML (WinRT)Stretch WrapGrid

<ItemsPanelTemplate > 
    <WrapGrid x:Name="ContentGrid" MinWidth="200" MinHeight="0" VerticalAlignment="Top" HorizontalAlignment="Center" Orientation="Horizontal" Margin="0,0,0,5" >          
    </WrapGrid> 
</ItemsPanelTemplate> 

Teraz jak mogę elementy rozciągliwe poziomo gdy szerokość jest większa niż MinWidth i Nie więcej elementów można dodać w poziomie. (Wszystkie elementy są dopasowane do centrum i nie ma dużo miejsca po obu stronach poziomo)

<DataTemplate x:Key="CustomChildItemTemplete"> 
    <Grid Background="Red"> 
    </Grid> 
</DataTemplate > 

Więcej szczegółów: Gdy szerokość listview wynosi około 800 (w przybliżeniu) jest pokazywanie 4 pozycji poziomej (jako minimum szerokość przedmiotu wynosi 200), ale jeśli szerokość wynosi 900 (4 elementy widoczne), a puste miejsce (50 pikseli) znajduje się po prawej i lewej stronie itemscontrol, w jaki sposób mogę usunąć to puste miejsce poprzez zwiększenie szerokości elementu (po prostu szerokość przedmiotu musi być 225 gdy listview szerokość to 900)

+1

Nie rozumiem twojego problemu bardzo dobrze. Może zrzut ekranu z twoim wynikiem może być przydatny? –

+0

@NicolasVoron, Patrz edycja – VibeeshanRC

+1

Czy jest to dynamiczne (rozmiar elementu ItemsControl zmienia się lub jest on automatycznie ustawiany według układu), czy ustawiasz szerokość lub swoje elementy? –

Odpowiedz

3

Najprostszym sposobem jest powiązanie MinWidth w ten sposób:

<ItemsControl x:Name="MyItemsControl"> 
    <ItemsPanelTemplate > 
     <WrapGrid x:Name="ContentGrid" MinWidth="{Binding Path=Width, MinWidth="{Binding RelativeSource={RelativeSource Mode=Self}, Converter={StaticRessource Myconverter}, ConverterParameter=[Here Nb of object that you want in one line]}" MinHeight="0" VerticalAlignment="Top" HorizontalAlignment="Center" Orientation="Horizontal" Margin="0,0,0,5" >          
     </WrapGrid> 
    </ItemsPanelTemplate> 
</ItemsControl> 

Konwerter po prostu podziel szerokość swoich elementówControl przez parametr (Nb obiektu, który chcesz w jednym wierszu). Tak więc obiekty są automatycznie w rozmiarze, który chcesz!

+1

@vibeeshanRC proszę spojrzeć na mój zredagowany post –

+0

Nie testuję tego kodu, więc może nie działają "tak jak jest", ale idea jest taka. możesz spróbować zamiast tego z 'RelativeSource = {RelativeSource TemplatedParent}', który działa na wpf, ale nie testowany z winRT –

+1

'RelativeSource = {RelativeSource Mode = TemplatedParent}}} wydaje się działać z winRT –

Powiązane problemy