GroupStyle事件中的VariableSizedWrapGrid未触发

时间:2013-10-30 08:33:51

标签: c# gridview microsoft-metro winrt-xaml windows-8.1

好的,这让我疯了!我花了一半时间研究这个问题。我正在使用基于XAML的Windows 8.1应用程序,基本上我正在尝试在GridView中的组之间实现一些拖放功能。到目前为止,一切都在起作用,除非我试图将一个项目“删除”到一个新组中。经过很长时间,我已经缩小到没有为GroupStyle.Panel VariableSizedWrapGrid触发的“drop”事件。我试图按照this网页的内容进行操作。

我为我的生活无法弄清楚为什么它不会开火。我尝试过在我的gridview中测试其他drop事件,它们似乎都按预期工作。

以下是我目前的代码:

    <GridView
        x:Name="itemGridView"
        AutomationProperties.AutomationId="ItemGridView"
        AutomationProperties.Name="Grouped Items"
        Grid.RowSpan="2"
        Padding="116,137,40,46"
        ItemsSource="{Binding Source={StaticResource groupedItemsViewSource}, Mode=TwoWay}"
        SelectionMode="None"
        CanDragItems="True"
        DragItemsStarting="itemGridView_DragItemsStarting"
        IsSwipeEnabled="true"
        IsItemClickEnabled="True"
        ItemClick="ItemView_ItemClick">
        <GridView.ItemTemplate>
            <DataTemplate>
                <VariableSizedWrapGrid HorizontalAlignment="Left" Width="250" Height="250">
                    <Border Background="{ThemeResource ListViewItemPlaceholderBackgroundThemeBrush}">
                        <Image Source="{Binding Image}" Stretch="UniformToFill" AutomationProperties.Name="splash"/>
                    </Border>
                    <StackPanel VerticalAlignment="Bottom" Background="{ThemeResource ListViewItemOverlayBackgroundThemeBrush}">
                        <TextBlock Text="{Binding Path=Name }" Foreground="{ThemeResource ListViewItemOverlayForegroundThemeBrush}" Style="{StaticResource TitleTextBlockStyle}" Height="60" Margin="15,0,15,0"/>
                    </StackPanel>
                </VariableSizedWrapGrid>
            </DataTemplate>
        </GridView.ItemTemplate>
        <GridView.ItemsPanel>
            <ItemsPanelTemplate>
                <ItemsWrapGrid GroupPadding="0,0,70,0"/>
            </ItemsPanelTemplate>
        </GridView.ItemsPanel>
        <GridView.GroupStyle>
            <GroupStyle HidesIfEmpty="False">
                <GroupStyle.HeaderTemplate>
                    <DataTemplate>
                        <VariableSizedWrapGrid Margin="0,0,0,2">
                            <Button Foreground="{ThemeResource ApplicationHeaderForegroundThemeBrush}"
                                AutomationProperties.Name="Group Title"
                                Style="{StaticResource TextBlockButtonStyle}"
                                    Click="Button_Click">
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock Text="{Binding Name}" Margin="0,-11,10,10" Style="{StaticResource SubheaderTextBlockStyle}" TextWrapping="NoWrap" />
                                    <TextBlock Text="{StaticResource ChevronGlyph}" FontFamily="Segoe UI Symbol" Margin="0,-11,0,10" Style="{StaticResource SubheaderTextBlockStyle}" TextWrapping="NoWrap" />
                                </StackPanel>
                            </Button>
                        </VariableSizedWrapGrid>
                    </DataTemplate>
                </GroupStyle.HeaderTemplate>
                <GroupStyle.Panel>
                    <ItemsPanelTemplate>
                        <VariableSizedWrapGrid Drop="VariableSizedWrapGrid_Drop" AllowDrop="True"/>
                    </ItemsPanelTemplate>
                </GroupStyle.Panel>
            </GroupStyle>
        </GridView.GroupStyle>
    </GridView>

我真的希望有人能看到我的错误!我确信它很简单,但我只需要有人指出这一点。 :)

1 个答案:

答案 0 :(得分:0)

有同样的问题,然后找到了这个例子: How to drag item between groups in grouped gridview

我尝试使用StackPanel作为GridView的ItemsPanel,为我工作。尝试使用StackPanel而不是ItemsWrapGrid作为GridView。

 <ItemsPanelTemplate>
     <StackPanel Orientation="Horizontal" />
 </ItemsPanelTemplate>

还是无法理解这种行为,有什么想法吗?