1

我有一个这样的页面

<Page.Resources>
    <!--
        這個頁面顯示的群組項目集合,繫結到完整項目
        清單的子集,因為群組中的項目無法虛擬化
    -->
    <CollectionViewSource
        x:Name="groupedItemsViewSource"
        Source="{Binding Groups}"
        IsSourceGrouped="true"
        ItemsPath="TopItems"
        d:Source="{Binding AllGroups, Source={d:DesignInstance Type=data:SampleDataSource, IsDesignTimeCreatable=True}}"/>

    <!-- TODO: 如果已在 App.xaml 中宣告金鑰 AppName,則刪除這一行 -->
    <x:String x:Key="AppName">我的應用程式</x:String>
</Page.Resources>

    <local:MyGridView            
        Grid.Row="1"
        x:Name="itemGridView"
        VerticalAlignment="Top"
        Padding="116,0,40,0"
        ItemsSource="{Binding Source={StaticResource groupedItemsViewSource}}"                    
        SelectionMode="Multiple"
        IsSwipeEnabled="True"
        IsRightTapEnabled="False"
        AutomationProperties.AutomationId="ItemGridView"
        AutomationProperties.Name="Items"
        ScrollViewer.IsHorizontalScrollChainingEnabled="False"                    
        IsItemClickEnabled="True"
        ItemTemplate="{StaticResource Standard180x240ItemTemplate}"
        SelectionChanged="itemGridView_SelectionChanged_1"
        ItemClick="ItemView_ItemClick">

        <local:MyGridView.ItemsPanel>
            <ItemsPanelTemplate>
                <VirtualizingStackPanel Orientation="Horizontal"/>
            </ItemsPanelTemplate>
        </local:MyGridView.ItemsPanel>
        <local:MyGridView.GroupStyle>
            <GroupStyle>
                <GroupStyle.HeaderTemplate>
                    <DataTemplate>
                        <Grid Margin="1,0,0,6" >
                            <Button AutomationProperties.Name="Group Title" Style="{StaticResource TextPrimaryButtonStyle}" >
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock Text="{Binding Title}" Margin="3,-7,10,10" Style="{StaticResource GroupHeaderTextStyle}" />
                                </StackPanel>
                            </Button>
                        </Grid>
                    </DataTemplate>
                </GroupStyle.HeaderTemplate>
                <GroupStyle.Panel>
                    <ItemsPanelTemplate>
                        <!--<VariableSizedWrapGrid Orientation="Vertical" Margin="0,0,80,0"/>-->
                        <VariableSizedWrapGrid MaximumRowsOrColumns="8" ItemWidth="180" ItemHeight="240" Orientation="Vertical" Margin="0,0,80,0"/>
                    </ItemsPanelTemplate>
                </GroupStyle.Panel>
            </GroupStyle>
        </local:MyGridView.GroupStyle>
    </local:MyGridView>

当我尝试删除以下代码中的选定项目时:

private void Delete()
{
    var group = SampleDataSource.GetGroup("myGroup");
    foreach (SampleDataItem item in itemGridView.SelectedItems)
    {
        group.Items.Remove(item);
    }
}

我在这里的 App.gi.cs 文件中出现错误

 #if DEBUG && !DISABLE_XAML_GENERATED_BREAK_ON_UNHANDLED_EXCEPTION
        UnhandledException += (sender, e) =>
        {
            if (global::System.Diagnostics.Debugger.IsAttached)     
                global::System.Diagnostics.Debugger.Break();
        };
 #endif

e.消息显示:

“同一包含故事板中的多个动画不能针对单个元素的相同属性。” 细绳

那么如何删除选定的项目?

谢谢你的帮助。

4

2 回答 2

1

我真的很想知道为什么会这样,但我什么也没找到。但我有一个解决方案:

private void Delete()
{
    IList<SampleDataItem> selectedItems = new List<SampleDataItem>();
    foreach (SampleDataItem item in itemGridView.SelectedItems)
    {
        selectedItems.Add(item);
    }
    var group = SampleDataSource.GetGroup("myGroup");
    foreach (SampleDataItem item in selectedItems)
    {
        group.Items.Remove(item);
    }
}

如果你发现了“为什么”,请告诉我!:)

于 2013-03-11T05:10:52.237 回答
0

我面前没有编译器,但是您是否尝试过类似的方法:

group.Items.RemoveAll(itemGridView.SelectedItems);

而不是你的 foreach 循环。您可能会发现 SelectedItems 和 group 之间的交叉依赖是问题所在(循环外的删除也是如此)。

于 2012-10-10T10:23:07.717 回答