c# - 如何修复 ListView Windows Phone 8.1 XAML 中的错误

标签 c# windows-phone-8.1

我在 HUB 中制作了一个列表并成功管理,但是当我尝试创建一种样式来分隔要列出的项目时,我遇到了一个非常奇怪的错误,当我试图在列表中间向下滑动时,他开始shake 只是因为我添加了边距,如果我删除工作正常。

这是我的代码!

<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>

所以我的错误特别在这部分代码中:

<Setter Property="Margin" Value="0,0,0,20" />

如果我离开这个 Works well,有人知道它是什么吗?

最佳答案

这是 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;
        }
    }
}

关于c# - 如何修复 ListView Windows Phone 8.1 XAML 中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32032029/

相关文章:

c# - 在线程执行过程中更新UI C# android

c# - 无法添加 net.tcp 作为服务引用

c# - .NET 2.0/C# 中泛型方法元数据的签名格式是什么?

javascript - 在 Visual Studio 2013 的 Windows Phone javascript 模板中启用状态栏

c# - Windows.Phone.UI.Input 位于何处?

windows-phone-8 - Windows Phone 8.1 Silverlight 应用程序中 Package.appxmanifest.xml 文件的用途是什么?

c# - 如何将对象转换为具有公共(public)无参数构造函数以遵守 : new() constraint?

c# - 为什么会触发此事件?

c# - 使用图像填充 ListView 时出现内存不足异常 (Windows Phone 8.1)

xaml - 在 Windows Phone 上设置 ListView 的 GroupStyle.Panel