2014-10-22 3 views
3

Я создаю приложение для Windows Phone 8 (silverlight). Я хочу отображать данные в двух столбцах в ListBox. Я использую this method. В этой статье представлен демонстрационный проект с кодом. Вот основной код выхода:ListBoxItem не растягивается в ListBox

<ListBox x:Name="ItemsListBox"> 
<ListBox.ItemTemplate> 
    <DataTemplate> 
     <ItemsControl ItemTemplate="{StaticResource ItemDataTemplate}" ItemsSource="{Binding}"> 
      <ItemsControl.ItemsPanel> 
       <ItemsPanelTemplate> 
        <VirtualizingStackPanel Orientation="Horizontal" /> 
       </ItemsPanelTemplate> 
      </ItemsControl.ItemsPanel> 
     </ItemsControl> 
    </DataTemplate> 
</ListBox.ItemTemplate> 

Он работает, но данные не растягиваются, вправо есть свободное пространство. enter image description here

Я пробовал много вариантов

<ListBox...> 
<ListBox.Resources> 
    <Style TargetType="ListBoxItem"> 
     <Setter Property="HorizontalContentAlignment" Value="Stretch"/> 
    </Style> 
</ListBox.Resources> 

....

вставляется HorizontalAlignment = "Stretch"

, но они не работают. Скажите, как я растягиваю ширину данных? Мне нужно, чтобы каждый столбец занимал половину общей ширины.

Это код моего DataTemplate

<DataTemplate x:Key="ItemDataTemplate" > 


     <Grid HorizontalAlignment="Stretch"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition/> 
       <ColumnDefinition Width="4*"/> 
       <ColumnDefinition/> 
      </Grid.ColumnDefinitions> 




      <Button Grid.Column="1" Margin="5" HorizontalContentAlignment="Stretch" HorizontalAlignment="Stretch" > 
       <Grid> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition/> 
         <ColumnDefinition Width="4*"/> 
         <ColumnDefinition/> 
        </Grid.ColumnDefinitions> 

        <Grid.RowDefinitions> 
         <RowDefinition/> 
         <RowDefinition/> 
        </Grid.RowDefinitions> 

        <TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Name}" /> 
        <TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding AddInfo}" /> 
       </Grid> 
      </Button> 

     </Grid> 


</DataTemplate> 
+0

Я стараюсь <инструментарий: WrapPanel Ориентация = «Горизонтальный» HorizontalAlignment = «Stretch» ​​/> , но это не работает - на правом является свободным пространством – FetFrumos

+0

@EugenePodskal 'UniformGrid' не существует в Silverl ight/WP – McGarnagle

+0

Можете ли вы также разместить разметку для своего «ItemDataTemplate»? Нам нужно посмотреть, как вы его настраиваете. – McGarnagle

ответ

0

В вашем данном шаблоне вам следует добавить Height = "100%" для вертикального Stretch или weidth = "100%" для горизонтального Stretch , который находится внутри TextBlock

</Grid.RowDefinitions> 

       <TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Name}" Height="//some vale in decimal" Widht="//some vale in decimal" /> 
       <TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding AddInfo}" Height="//some vale in decimal" Widht="//some vale in decimal" /> 
      </Grid> 
+0

Мне нужна фиксированная ширина – FetFrumos

Смежные вопросы