我有一个简单的 Metro 风格应用程序,我想将 16 张图像拖放到另一个图像上。另一个图像应将其源设置为拖动图像的源。
这是拖动方法:
private void ManipulationDelta_Pic(object sender, ManipulationDeltaRoutedEventArgs e)
{
Image img = e.OriginalSource as Image;
if (img != null)
{
var ct = img.RenderTransform as CompositeTransform;
if (ct != null)
{
ct.TranslateX += e.Delta.Translation.X;
ct.TranslateY += e.Delta.Translation.Y;
}
}
}
这是带有图像的 xaml,它应该是 drop darget(想象其中 16 个):
</Grid>
<Grid Margin="377,0,371,23" Background="Cornsilk" Grid.Row="1" Height="600" Width="600" AllowDrop="True">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150" />
<ColumnDefinition Width="150"/>
<ColumnDefinition Width="150"/>
<ColumnDefinition Width="150"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="150"/>
<RowDefinition Height="150"/>
<RowDefinition Height="150"/>
<RowDefinition Height="150"/>
</Grid.RowDefinitions>
<Border x:Name="z1" BorderBrush="Black" BorderThickness="3" Grid.Row="0" Grid.Column="0" Background="Beige" AllowDrop="true">
<Image x:Name="puzz1" HorizontalAlignment="Left" Height="150" VerticalAlignment="Top" Width="150" Source="Assets/win8001.jpg" AllowDrop="True"/>
</Border>
</Grid>
并且有应该丢弃的图像(也有 16 个)。
<Image x:Name="sidePics1" Width="150" Height="150" ManipulationMode="All" Margin="1311,507,-95,-29" Grid.Row="1" ManipulationDelta="ManipulationDelta_Pic" Drop="Drop_Pic">
<Image.RenderTransform>
<CompositeTransform />
</Image.RenderTransform>
</Image>
我不知道如何解决这个问题,我是 Metro App 编程的新手。我知道它应该与 DragOver、DragEnter、DragLeave 和 Drop Event 相关,但我不知道该怎么做。
我需要帮助,谢谢。