C# WP7列表框如何允许用户订购项目

C# WP7列表框如何允许用户订购项目,c#,.net,silverlight,windows-phone-7,C#,.net,Silverlight,Windows Phone 7,场景:使用MVVM的Windows Phone 7应用程序。我有一个列表框,它绑定到我的ViewModel中的项目集合。此视图的主要用途是允许用户根据自己的喜好重新订购项目 如何在WP7中实现这一点?我希望这样做的方式是简单地允许用户将项目拖动到他想要的位置。这种姿态是否有内在的支持?(我还没找到) 您可以在项目中包括,然后使用GestureListener来监听DragStarted、DragDelta和DragComplete事件。正如AnthonyWJones所说,GestureListe

场景:使用MVVM的Windows Phone 7应用程序。我有一个列表框,它绑定到我的ViewModel中的项目集合。此视图的主要用途是允许用户根据自己的喜好重新订购项目


如何在WP7中实现这一点?我希望这样做的方式是简单地允许用户将项目拖动到他想要的位置。这种姿态是否有内在的支持?(我还没找到)

您可以在项目中包括,然后使用
GestureListener
来监听
DragStarted
DragDelta
DragComplete
事件。

正如AnthonyWJones所说,GestureListener可能就是您要寻找的。我只是想补充一点,您可以对列表使用FluidMoveBehavior,以便在项目顺序更改时,项目能够平滑地动画化。在我看来,它提供了一个大大改进的用户体验

流体移动行为非常简单,只需“插入”现有列表即可,如下所示:

<Style TargetType="ListBox" x:Key="FluidListBox">
    <Setter Property="ItemsPanel">
        <Setter.Value>
            <ItemsPanelTemplate>
                <StackPanel>
                    <i:Interaction.Behaviors>
                        <ei:FluidMoveBehavior AppliesTo="Children" Tag="DataContext">
                            <ei:FluidMoveBehavior.EaseY>
                                <BackEase EasingMode="EaseInOut" Amplitude="0.5"/>
                            </ei:FluidMoveBehavior.EaseY>
                            <ei:FluidMoveBehavior.EaseX>
                                <BackEase EasingMode="EaseInOut" Amplitude="0.5"/>
                            </ei:FluidMoveBehavior.EaseX>
                        </ei:FluidMoveBehavior>
                    </i:Interaction.Behaviors>
                </StackPanel>
            </ItemsPanelTemplate>
        </Setter.Value>
    </Setter>
</Style>

此解决方案非常有效

这是一个控件,您只需将其放入应用程序中,就可以简单地启用拖动手柄并在列表框中移动项目