0

我需要拖放控件,例如 TextBox 和 Image。

我有一个解决方案可以做到这一点,

这里是使用交互和鼠标元素行为进行拖放的代码

 <TextBox Height="30" Margin="70,50,250,133"
           Name="textBlock1" Text="Pavan Pareta" MouseMove="MouseMoving">
            <i:Interaction.Behaviors>
                <el:MouseDragElementBehavior ConstrainToParentBounds="True"/>
            </i:Interaction.Behaviors>
        </TextBox>

        <Image Height="110" Name="image1" Stretch="Fill" Source="/WmDev_DragAndDrop;component/Images/house.png" Margin="254,90,95,407" MouseMove="MouseMoving">
            <i:Interaction.Behaviors>
                <el:MouseDragElementBehavior ConstrainToParentBounds="True"/>
            </i:Interaction.Behaviors>
        </Image>

并且 MouseMoving 事件是

private void MouseMoving(object sender, MouseEventArgs e)
{
        if (sender.GetType() == typeof(TextBox))
        {
            TextBox realSender = (TextBox)sender;
            Canvas.SetZIndex(realSender, idx++);
        }
        else if (sender.GetType() == typeof(Image))
        {
            Image realSender = (Image)sender;
            Canvas.SetZIndex(realSender, idx++);
        }
}

但我需要在动态创建的控件上实现这一点。我找不到在务实创建的运行时控件上执行此操作的方法。任何人都可以帮我这样做。

谢谢你。

4

1 回答 1

2

如果问题是如何将行为添加到从后面的代码实例化的控件中,那么您可以这样做:

 Image image1=new Image();
 ...
 MouseDragElementBehavior mouseDragElementBehavior=new MouseDragElementBehavior();
 mouseDragElementBehavior.ConstrainToParentBounds=true;
 Interaction.GetBehaviors(img).Add(mouseDragElementBehavior);
于 2013-10-12T19:02:41.457 回答