2016-10-06 3 views
0
<Grid Name="FavouriteStations" Visibility="Visible" > 
    <ListBox Name="FavouriteStationsListBox" ItemsSource="{Binding}" Loaded="FavouriteStationsListBoxLoaded" > 
     <ListBox.ItemContainerStyle> 
      <Style TargetType="ListBoxItem"> 
       <Setter Property="HorizontalContentAlignment" Value="Stretch" /> 
      </Style> 
     </ListBox.ItemContainerStyle> 

     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <local:StationTemplateSelector Content="{Binding}"> 
        <local:StationTemplateSelector.St> 
         <DataTemplate> 
          <Grid MinHeight="150" MinWidth="480" Background="#242224" > 

          </Grid> 
         </DataTemplate> 
        </local:StationTemplateSelector.St> 
        <local:StationTemplateSelector.Ad> 
         <DataTemplate> 
          <Grid MinHeight="150" MinWidth="480" Background="#FFFFFF" > 

          </Grid> 
         </DataTemplate> 
        </local:StationTemplateSelector.Ad> 
       </local:StationTemplateSelector> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 
</Grid> 

j'ai un listbox avec de multiples données templates.It est très bien dans l'orientation portrait, mais quand je change pour paysage la hauteur listboxitem est automatiquement réglé sur MinHeight et la largeur de MinWidth mais je veux la largeur d'être identique à la largeur de l'écran j'ai essayé les éléments suivantsListBoxItem l'intérieur d'une zone de liste non étirage complètement à la largeur de l'écran

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

mais le ListBoxItem a la même largeur et la hauteur et la seule différence que je vois qu'il est aligné au centre de l'écran. Comment puis-je réparer cela ? Screen

Répondre

0

D'accord, j'ai trouvé une solution. Le problème a été causé par le DataTemplateSelector, vous devez définir la valeur Template pour le DataTemplateSelector (StationTemplateSelector) que vous utilisez dans la section <phone:PhoneApplicationPage.Resources> pour que cela fonctionne.

<phone:PhoneApplicationPage.Resources> 
<Style TargetType="local:StationTemplateSelector"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="local:StationTemplateSelector"> 
         <ContentPresenter ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     <Setter Property="HorizontalAlignment" Value="Stretch"/> 
    <Setter Property="VerticalAlignment" Value="Stretch"/> 
</Style> 

doivent également régler la ItemContainerStyle dans votre ListBox contrôle

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