大家好:iam使用WPF创建一些控件,现在我只是使用一个简单的控件进行测试,该控件包含一个Rectangle和一个带有两个标签的Stack Panel。 我按照拖放操作示例http://msdn.microsoft.com/en-us/library/hh144799.aspx,它允许拖动控件以获取其信息(颜色)并将其放到另一个。 我想做同样的事情,但在这个时间而不是丢弃颜色我想删除标签的文本。 例如,在第一个控件中我有两个标签:“频道”和“类型”,所以我希望用D&amp; D替换第二个控件的标签,将其信息更改为“频道x”或“类型x”< / p>
第一控制:
<UserControl x:Class="BxCtrl"
.......
.....
AllowDrop="True">
<Grid Width="150" Height="150">
<Rectangle x:Name="Box" Fill="gray" MouseMove="Box_MouseMove" RadiusX="8" RadiusY="8" Grid.Row="0" />
<StackPanel>
<Label Content="Channel" Width="auto" Height="28.093" Margin="25,15,67.133,15" Name="label"/>
<Label Content="Type" Width="42.933" Height="28.093" Margin="25,20,0,20" HorizontalAlignment="Left" Name="label1"/>
</StackPanel>
和第二个完全相同的
<UserControl
...
...
x:Class BxCtrl1
AllowDrop="True"
<Grid Width="150" Height="150">
<Rectangle x:Name="Box1" Fill="#FFCABFD5" RadiusX="8" RadiusY="8" MouseMove="Box1_MouseMove" Tag="hoola" />
<StackPanel HorizontalAlignment="Left" Width="150" Name="StackPanel1">
<Label Content="1" Width="auto" Height="28.093" Margin="25,15,67.133,15" Name="labelBox1"/>
<Label Content="1" Width="42.933" Height="28.093" Margin="25,20,0,20" HorizontalAlignment="Left" Name="label1Box1"/>
</StackPanel>
</Grid>
根据拖放操作的文档,我必须创建我想用dataObject发送的对象,所以我想我必须为标签创建一个dataObject?
Private Sub Box_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Input.MouseEventArgs)
'TODO: Add event handler implementation here.
MyBase.OnMouseMove(e)
If e.LeftButton = MouseButtonState.Pressed Then
Dim data As New DataObject
data.SetData(DataFormats.StringFormat, Box.Fill.ToString())
data.SetData("Double", Box.Height)
data.SetData("Object", Me)
data.GetText()
DragDrop.DoDragDrop(Me, data, DragDropEffects.Move)
End If
End Sub
我使用GetText(),但我不知道如何发送它,任何人都知道如何将标签文本放入另一个??
答案 0 :(得分:0)
您所做的就是将您的信息填充到DataObject中,以便以后在处理drop时甚至在其他控件中进行重新处理。请继续阅读本教程,您将看到他们实现了一个“OnDrop”事件,这里的关键是您填写的数据出现在
中byval e As System.Windows.DragEventArgs
...
Dim dataString As String = e.Data.GetData(DataFormats.StringFormat)