WP7的任意拖放

时间:2012-01-31 08:43:21

标签: windows-phone-7 drag-and-drop

我正在尝试找一种显示文本块的方法,或者允许我随意拖放屏幕上的控件。

我已经在谷歌和这里搜索了,但我找到的每个拖放相关问题都是围绕交换数据,而不仅仅是位置。

是否有人知道某些事情已经准备就绪,或者你能指出我应该朝着哪个方向发展?

3 个答案:

答案 0 :(得分:4)

您可以使用行为执行此操作:

<TextBlock Text="Hello!">
    <i:Interaction.Behaviors>
        <el:MouseDragElementBehavior ConstrainToParentBounds="True"/>
    </i:Interaction.Behaviors>
</TextBlock>

您需要在解决方案中添加对Microsoft.Expression.Interactions的引用,并在XAML文件的顶部添加以下命名空间:

xmlns:el="clr-namespace:Microsoft.Expression.Interactivity.Layout;assembly=Microsoft.Expression.Interactions"
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"

答案 1 :(得分:3)

xaml:

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    <TextBlock Height="30" Margin="125,132,0,0"
               Name="textBlock1" Text="TextBlock"
               Width="83" MouseMove="textBlock1_MouseMove" />
</Grid>

和背后的代码:

private void textBlock1_MouseMove(object sender, MouseEventArgs e)
{
   TextBlock realSender = (TextBlock)sender;
   var theParent = (Grid)realSender.Parent;
   var position = e.GetPosition(theParent);
   realSender.Margin = new Thickness(
                       position.X - realSender.Width / 2,
                       position.Y - realSender.Height / 2, 0, 0);

}

答案 2 :(得分:0)

toolkit sample曾经包含了这样做的一个例子。

不确定它是否仍然在那里,因为它是基于已被弃用的手势支持。如果它已经消失,请检查August 2011 version