简体   繁体   English

WP7-VirtualizingStackPanel底边距不起作用

[英]WP7 - VirtualizingStackPanel bottom margin does not work

I have VirtualizingStackPanel in ListBox ItemsPanel. 我在列表框ItemsPanel中有VirtualizingStackPanel。 If I set Margin="0,0,0,50" then margin is not showed but if I set left margin (or top or right) Margin="50,0,0,0" then margin works correct. 如果我设置Margin =“ 0,0,0,50”,则不会显示边距,但是如果我设置了左边距(或顶部或右边)Margin =“ 50,0,0,0”,则保证金可以正常工作。

If I change VirtualizingStackPanel for StackPanel then bottom margin works well. 如果我将VirtualizingStackPanel更改为StackPanel,则下边距效果很好。

This Is my code: 这是我的代码:

<Grid x:Name="ContentPanel"
      Grid.Row="1"
      Margin="12,0,12,0">

  <ListBox x:Name="TasksListBox"
           Margin="0"
           ItemsSource="{Binding Tasks}"
           HorizontalAlignment="Stretch"
           ScrollViewer.VerticalScrollBarVisibility="Hidden">

    <ListBox.ItemsPanel>
      <ItemsPanelTemplate>
        <!--<StackPanel Margin="0,0,0,14" />-->
        <VirtualizingStackPanel Margin="0,0,0,100"
                                Height="Auto" />
      </ItemsPanelTemplate>
    </ListBox.ItemsPanel>

    <ListBox.ItemTemplate>
      <DataTemplate>

        <Button Background="White"
                Width="455"
                Height="105"
                Tag="{Binding Id}"
                HorizontalContentAlignment="Stretch"
                VerticalContentAlignment="Stretch"
                Click="Button_Click_1">

          <Grid HorizontalAlignment="Stretch"
                VerticalAlignment="Stretch">

            <Grid.ColumnDefinitions>
              <ColumnDefinition Width="Auto" />
              <ColumnDefinition Width="Auto" />
              <ColumnDefinition Width="Auto" />
              <ColumnDefinition Width="*" />
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
              <RowDefinition Height="*" />
              <RowDefinition Height="24" />
            </Grid.RowDefinitions>

            <TextBlock Grid.ColumnSpan="4"
                       Text="{Binding Name}"
                       FontSize="24"
                       Foreground="#400000" />

            <Image Grid.Row="1"
                   Visibility="{Binding Project, Converter={StaticResource StringToVisibilityConverter}}"
                   Source="/Images/ProjectIcon.png"
                   Width="20"
                   Height="18"
                   HorizontalAlignment="Left"
                   VerticalAlignment="Top"
                   Margin="0,0,5,0" />

            <TextBlock Grid.Row="1"
                       Grid.Column="1"
                       Visibility="{Binding Project, Converter={StaticResource StringToVisibilityConverter}}"
                       Text="{Binding Project, Converter={StaticResource ToUppercaseConverter}}"
                       FontSize="16"
                       Foreground="#666666"
                       HorizontalAlignment="Left"
                       VerticalAlignment="Top"
                       Margin="0,-2,9,0"
                       LineStackingStrategy="BlockLineHeight" />

            <Image Grid.Row="1"
                   Grid.Column="2"
                   Visibility="{Binding Context, Converter={StaticResource StringToVisibilityConverter}}"
                   Source="/Images/ContextIcon.png"
                   Width="20"
                   Height="18"
                   HorizontalAlignment="Left"
                   VerticalAlignment="Top"
                   Margin="-3,1,1,0" />

            <TextBlock Grid.Row="1"
                       Grid.Column="3"
                       Visibility="{Binding Context, Converter={StaticResource StringToVisibilityConverter}}"
                       Text="{Binding Context, Converter={StaticResource ToUppercaseConverter}}"
                       FontSize="16"
                       Foreground="#666666"
                       HorizontalAlignment="Left"
                       VerticalAlignment="Top"
                       Margin="0,-2,0,0"
                       LineStackingStrategy="BlockLineHeight" />
          </Grid>

          <toolkit:GestureService.GestureListener>
            <toolkit:GestureListener Flick="GestureListener_Flick_1" />
          </toolkit:GestureService.GestureListener>

          <toolkit:ContextMenuService.ContextMenu>
            <toolkit:ContextMenu IsZoomEnabled="False"
                                 BorderBrush="#9c0605"
                                 Foreground="#400000">
              <toolkit:MenuItem Header="dokončeno"
                                Foreground="#400000"
                                Tag="{Binding Id}"
                                Click="MenuItem_Click_1" />
              <toolkit:MenuItem Header="upravit"
                                Foreground="#400000"
                                Tag="{Binding Id}"
                                Click="MenuItem_Click_2" />
              <toolkit:MenuItem Header="odstranit"
                                Foreground="#400000"
                                Tag="{Binding Id}"
                                Click="MenuItem_Click_3" />
            </toolkit:ContextMenu>
          </toolkit:ContextMenuService.ContextMenu>
        </Button>
      </DataTemplate>
    </ListBox.ItemTemplate>
  </ListBox>
</Grid>

Code Behind 背后的代码

 ObservableCollection<string> data = new ObservableCollection<string>();
 for (int i = 0; i < 40; i++)
 {
      data.Add("Item" + i);
 }
 lbTest.ItemsSource = data;

Xaml Xaml

<Grid x:Name="LayoutRoot"
      Background="Transparent">

  <ListBox x:Name="lbTest">
    <ListBox.Style>
      <Style TargetType="ListBox">
        <Setter Property="Background"
                Value="Transparent" />
        <Setter Property="Foreground"
                Value="{StaticResource PhoneForegroundBrush}" />
        <Setter Property="ScrollViewer.HorizontalScrollBarVisibility"
                Value="Disabled" />
        <Setter Property="ScrollViewer.VerticalScrollBarVisibility"
                Value="Auto" />
        <Setter Property="BorderThickness"
                Value="0" />
        <Setter Property="BorderBrush"
                Value="Transparent" />
        <Setter Property="Padding"
                Value="0,0,0,150" />
        <Setter Property="Template">
          <Setter.Value>
            <ControlTemplate TargetType="ListBox">
              <ScrollViewer x:Name="ScrollViewer"
                            BorderBrush="{TemplateBinding BorderBrush}"
                            BorderThickness="{TemplateBinding BorderThickness}"
                            Background="{TemplateBinding Background}"
                            Foreground="{TemplateBinding Foreground}"
                            Padding="{TemplateBinding Padding}">
                <ItemsPresenter />
              </ScrollViewer>
            </ControlTemplate>
          </Setter.Value>
        </Setter>
      </Style>
    </ListBox.Style>
  </ListBox>

</Grid>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM