从长列表选择器中删除项目时,应用程序关闭

时间:2014-04-04 09:15:28

标签: c# windows-phone-8

我刚刚创建了一个带有longlistseletor的简单应用程序,其中包含一个项目和一个删除此项目的按钮。我认为没有错,但每次我从这个列表中删除4或5项,应用程序总是关闭。是因为缺乏RAM吗?

顺便说一句,我的英语很糟糕,对不起:P

XAML代码:

<phone:LongListSelector ItemsSource="{Binding ItemsIdea}">
    <!-- item quick idea template-->
    <phone:LongListSelector.ItemTemplate>
        <DataTemplate>
            <StackPanel>
                <Grid HorizontalAlignment="Stretch" Margin="0,20,0,0">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="10"/>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="Auto"/>
                    </Grid.ColumnDefinitions>
                    <Rectangle Grid.Column="0" Fill="{StaticResource PhoneAccentBrush}"/>
                    <StackPanel Grid.Column="1">
                        <TextBlock Text="{Binding IdeaContent}" TextWrapping="Wrap" Style="{StaticResource PhoneTextLargeStyle}"/>
                    </StackPanel>
                    <Button Grid.Column="2" Click="btDeleteIdea_Click" BorderThickness="0.0" VerticalAlignment="Top">
                        <Image Source="/Assets/Icons/cancel_small.png"/>                                                
                    </Button>
                </Grid>
            </StackPanel>
        </DataTemplate>
    </phone:LongListSelector.ItemTemplate>
</phone:LongListSelector>

和C#代码:

private void btDeleteIdea_Click(object sender, RoutedEventArgs e) {
    var button = (sender as Button).DataContext as IdeaViewModel;
    if (button != null)
        App.ViewModel.DeleteIdea(button);
}

1 个答案:

答案 0 :(得分:0)

问题可能与LongListSelector中的一些小错误有关(我不知道它们是否仍然存在于当前版本和您使用的版本中)。

Here you can find类似的问题,解决方案是扩展您的LLS类。我前段时间遇到过类似的问题,这有助于:

 public class LongListSelectorExtension : LongListSelector
{
    protected override System.Windows.Size MeasureOverride(System.Windows.Size availableSize)
    {
        try { return base.MeasureOverride(availableSize); }
        catch (ArgumentException) { return this.DesiredSize; }
    }
}

您还可以look here对LLS代码进行一些改进。

也许这会有所帮助。


要使用您的扩展程序,您必须修改XAML:

添加项目的名称空间,其中类位于其他xmlns所在的开头:

xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:local="clr-namespace:Example" 

然后你应该能够在XAML文件中使用你的类而不是普通的LLS:

 <local:LongListSelectorExtension .../>