我正在尝试找一种显示文本块的方法,或者允许我随意拖放屏幕上的控件。
我已经在谷歌和这里搜索了,但我找到的每个拖放相关问题都是围绕交换数据,而不仅仅是位置。
是否有人知道某些事情已经准备就绪,或者你能指出我应该朝着哪个方向发展?
答案 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。