我在HUB中创建了一个列表并成功管理,但当我尝试创建一个样式来分隔要列出的项目时,当我尝试在列表中间向下滑动时,我有一个非常奇怪的错误他开始只是因为我添加了一个保证金,如果我删除工作正常。
继承我的代码!
<ListView x:Name="list" Loaded="ListView_Loaded" SelectedItem="true" SelectionChanged="searchResultsList_SelectionChanged" ItemsSource="{Binding}">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="Margin" Value="0,0,0,20" />
</Style>
</ListView.ItemContainerStyle>
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80" />
<ColumnDefinition Width="10" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Border Width="80" Height="80">
<Image Source="{Binding Caminho}" />
</Border>
<StackPanel Margin="0,16,0,0" Grid.Column="2">
<TextBlock Foreground="White" Text="{Binding NomeCurso}" TextWrapping="WrapWholeWords" FontSize="{StaticResource TextStyleExtraLargeFontSize}" />
</StackPanel>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
所以我的bug特别出现在这部分代码中:
<Setter Property="Margin" Value="0,0,0,20" />
如果我把这个作品保留得好,有人知道它是什么吗?
答案 0 :(得分:0)
这很奇怪它应该有效。但要解决您的问题,您可以在datatemplate网格中使用保证金。将边距设置为listitem数据模板的主网格
<DataTemplate>
<Grid Margin="0,0,0,20">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80" />
<ColumnDefinition Width="10" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Border Width="80" Height="80">
<Image Source="{Binding Caminho}" />
</Border>
<StackPanel Margin="0,16,0,0" Grid.Column="2">
<TextBlock Foreground="White" Text="{Binding NomeCurso}" TextWrapping="WrapWholeWords" FontSize="{StaticResource TextStyleExtraLargeFontSize}" />
</StackPanel>
</Grid>
</DataTemplate>
答案 1 :(得分:0)
这是WP 8.1中的一个错误,它与虚拟化有关。
您需要为每个项目明确指定宽度或使用我使用的内容(感谢Rudy),这是一个扩展的ListView
,可以解决此问题并且边距仍然有效:
public class PerfectScrollListView : ListView
{
public PerfectScrollListView()
{
this.SizeChanged += PerfectScrollListView_SizeChanged;
}
private void PerfectScrollListView_SizeChanged(object sender, SizeChangedEventArgs e)
{
if (ItemsPanelRoot != null)
{
ItemsPanelRoot.Width = e.NewSize.Width;
}
}
}