Ok then it's very simple. Use ScatterViewItem.ContainerDeactivated event.It fires when IsContainerActive switches to false (when the container is not manipulated any more). Now all you have to do is to test whether is over one of your buttons. Use ActualCenter property to know where your SVI is placed.
EDIT: Here is some code
I've set a very simple window:
<Grid>
<Canvas>
<Button x:Name="btnButton1" Canvas.Left="100" Canvas.Top="200" Width="200" Height="200">Button 1</Button>
<Button x:Name="btnButton2" Canvas.Left="500" Canvas.Top="300" Width="200" Height="200">Button 2</Button>
</Canvas>
<s:ScatterView x:Name="containerScatterView" s:ScatterViewItem.ContainerDeactivated="ScatterView_ContainerDeactivated">
<s:ScatterViewItem>
<Rectangle Fill="Red" Width="100" Height="100"/>
</s:ScatterViewItem>
<s:ScatterViewItem>
<Rectangle Fill="Green" Width="100" Height="100"/>
</s:ScatterViewItem>
</s:ScatterView>
</Grid>
Now the code of the event Handler:
private void ScatterView_ContainerDeactivated(object sender, RoutedEventArgs e)
{
ScatterViewItem sourceSVI = (ScatterViewItem)e.OriginalSource;
//Retrieve Button1 size
Rect btn1Bounds = VisualTreeHelper.GetDescendantBounds(btnButton1);
//Get the transform between SV and the button1. We need it because ActualCenter is relative to SV.
GeneralTransform transform1 = containerScatterView.TransformToVisual(btnButton1);
if (btn1Bounds.Contains(transform1.Transform(sourceSVI.ActualCenter)))
{
//If ActualPoint is in bounds of the button1 then do something
Console.WriteLine("Dropped on Button 1");
}
//Retrieve Button2 size
Rect btn2Bounds = VisualTreeHelper.GetDescendantBounds(btnButton2);
//Get the transform between SV and the button1. We need it because ActualCenter is relative to SV.
GeneralTransform transform2 = containerScatterView.TransformToVisual(btnButton2);
if (btn2Bounds.Contains(transform2.Transform(sourceSVI.ActualCenter)))
{
//If ActualPoint is in bounds of the button2 then do something else
Console.WriteLine("Dropped on Button 2");
}
}
I used here the simplest way to test whether the point is over the button. I just test whether the point is inside the bounding rect of the button. It is also possible to use WPF HitTesting.