我刚刚创建了一个带有longlistseletor的简单应用程序,其中包含一个项目和一个删除此项目的按钮。我认为没有错,但每次我从这个列表中删除4或5项,应用程序总是关闭。是因为缺乏RAM吗?
顺便说一句,我的英语很糟糕,对不起:PXAML代码:
<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);
}
答案 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 .../>