DockPanel не использует все пространство в ListBox, но за его пределами использует

#silverlight #xaml #windows-phone-7 #dockpanel

#silverlight #xaml #windows-phone-7 #dockpanel

Вопрос:

В моем приложении для Windows Phone я использую DockPanel для выравнивания двух кнопок: одной в левой части экрана (PanoramaItem), второй — справа. Этот код работает хорошо:

 <controls:PanoramaItem Header="page1">
   <panel:DockPanel>
      <Button  Content="Right"  panel:DockPanel.Dock="Right"/>
      <Button  Content="Left"  panel:DockPanel.Dock="Left"/>
   </panel:DockPanel>
</controls:PanoramaItem>
  

Но если я хочу, чтобы кнопки dock таким образом размещались в ListBox — обе выровняйте по левому краю : (

 <controls:PanoramaItem Header="page2">
   <ListBox Margin="0,0,-12,0" HorizontalContentAlignment="Stretch" 
        ItemsSource="{Binding Collection}" Height="418" VerticalAlignment="Top">
     <ListBox.ItemTemplate>
        <DataTemplate>
           <panel:DockPanel >
              <Button  Content="Right"  panel:DockPanel.Dock="Right"/>
              <Button  Content="Left"  panel:DockPanel.Dock="Left"/>
           </panel:DockPanel>
        </DataTemplate>
     </ListBox.ItemTemplate>
  </ListBox>
</controls:PanoramaItem>
  

Ответ №1:

Добавьте это внутри тега для listbox:

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