从surfacelistbox拖放到散点图 [英] Drag and drop from surfacelistbox to scatter view
问题描述
我想从surfacelistbox拖放到分散视图。
以下是我的编码,但它无法正常工作。谁有人可以帮忙?谢谢你
这是surfacelistbox.xaml代码
< s:SurfaceListBox
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP;高度=&"1080& quot;
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP;的HorizontalAlignment =安培; QUOT;左&安培; QUOT;姓名=& quot; list_img& quot;
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; VerticalAlignment =& quot; Top& quot;
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP;宽度=& quot; 250& quot;
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; SelectionMode =& quot; Single& quot;
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; BorderThickness =& quot; 0& quot;
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; HorizontalContentAlignment =& quot; Stretch& quot;
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; VerticalContentAlignment =& quot; Stretch& quot;
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; ScrollViewer.VerticalScrollBarVisibility =& quot; Hidden& quot;
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; ScrollViewer.HorizontalScrollBarVisibility =& quot; Hidden& quot;
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP;背景=& quot;#33CCCCCC& quot;
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; SelectionChanged =& quot; OnImageSelected& quot;
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP;的AllowDrop =安培; QUOT; />
$
Scatterview。 xaml代码
< pre lang =" xml">& lt; s:ScatterView
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;姓名=& quot; img_container& quot;
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; HorizontalAlignment =& quot; Center& quot;
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;高度=& quot; 962& quot;
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;保证金=& quot; 256,12,237,106& quot;
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; AllowDrop =" True"
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; S:SurfaceDragDrop.Drop = QUOT; Scatter_Drop" //分散掉落事件
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;宽度=& quot; 1177& quot;& gt;
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;
&NBSP; &NBSP; &NBSP; & lt; / s:ScatterView& gt;< / pre>
在surfacelistbox后面编码以加载图像
#region images
&NBSP; &NBSP;
&NBSP; &NBSP; &NBSP; private void loadAllImages()
&NBSP; &NBSP; &NBSP; {
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; int counter = 0;
&NBSP; &NBSP; &NBSP;
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; foreach(Directory.GetFiles中的字符串文件(" C:/ Users / leeying / Desktop / PhotoSharing 1.6 / SurfaceBluetoothV2 / image","* .jpg")))
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; {
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; System.Windows.Controls.Image img = new System.Windows.Controls.Image();
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; img.Source = new BitmapImage(new Uri(file));
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; Viewbox vb = new Viewbox {Width = 230,Child = img};
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; list_img.Items.Insert(counter,vb);
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; counter ++;
&NBSP; &NBSP;
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; }
&NBSP; &NBSP; &NBSP; }
&NBSP; &NBSP; &NBSP; void OnImageSelected(object sender,SelectionChangedEventArgs args)
&NBSP; &NBSP; &NBSP; {
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; if(list_img.SelectedItem == null){return; }
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; // SelectedItem的内容是一个Viewbox,其中包含我们想要用于拼图的图像。
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; System.Windows.Controls.Image newPuzzle =(System.Windows.Controls.Image)((Viewbox)list_img.SelectedItem).Child;
$
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; //将所选图像存储到ScatterViewItem中$
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; System.Windows.Controls.Image currentImg = new System.Windows.Controls.Image();
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; currentImg.Source = newPuzzle.Source;
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; ScatterViewItem imgCon = new ScatterViewItem();
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; imgCon.Content = currentImg;
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; imgCon.Center = new System.Windows.Point(600,500);
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; imgCon.Orientation = 0.0;
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; imgCon.TouchEnter + = new EventHandler& lt; TouchEventArgs& gt;(removeItem);
$
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; //添加刚刚选择的图像
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; img_container.Items.Add(imgCon);
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; ValidateOptions();
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; list_img.SelectedItem = null;
&NBSP; &NBSP; &NBSP; }
&NBSP; &NBSP; &NBSP; #endregion images
s:SurfaceDragDrop.Drop =" Scatter_Drop事件编码
private void Scatter_Drop (对象发件人,SurfaceDragDropEventArgs e)
{
&NBSP; //如果它不在ScatterView上,则以
//将其添加到源集合。
if(!ScatterItems.Contains(e.Cursor.Data) )
&NBSP; &NBSP; {
&NBSP; &NBSP; &NBSP; ScatterItems.Add((PhotoData)e.Cursor.Data);
}
&NBSP; &NBSP; //获取Scatter自动生成的ScatterViewItem。
&NBSP; &NBSP; ScatterViewItem svi =
&NBSP; &NBSP; &NBSP; scatter.ItemContainerGenerator.ContainerFromItem(e.Cursor.Data)as ScatterViewItem;
svi.Visibility = System.Windows.Visibility.Visible;
&NBSP; &NBSP; svi.Width = e.Cursor.Visual.ActualWidth;
&NBSP; &NBSP; svi.Height = e.Cursor.Visual.ActualHeight;
&NBSP; &NBSP; svi.Center = e.Cursor.GetPosition(scatter);
&NBSP; &NBSP; svi.Orientation = e.Cursor.GetOrientation(scatter);
&NBSP; &NBSP; svi.Background = Brushes.Transparent;
&NBSP; &NBSP; //将e.Handled设置为true可确保不执行默认的$
//行为。
&NBSP; &NBSP; e.Handled = true;
}
你好,
查看Surface SDK 2.0提供的ShoppingCart示例,它具有您正在寻找的所有功能
问候
serge
Hi, i want to do a drag and drop from surfacelistbox to scatter view.
Below are mine coding but it couldn't work. anyone can help ? Thanks
Here is the surfacelistbox.xaml code
<s:SurfaceListBox
Height="1080"
HorizontalAlignment="Left" Name="list_img"
VerticalAlignment="Top"
Width="250"
SelectionMode="Single"
BorderThickness="0"
HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Stretch"
ScrollViewer.VerticalScrollBarVisibility="Hidden"
ScrollViewer.HorizontalScrollBarVisibility="Hidden"
Background="#33CCCCCC"
SelectionChanged="OnImageSelected"
AllowDrop=" />
Scatterview. xaml code
<pre lang="xml"><s:ScatterView
Name="img_container"
HorizontalAlignment="Center"
Height="962"
Margin="256,12,237,106"
AllowDrop="True"
s:SurfaceDragDrop.Drop="Scatter_Drop" // scatter drop event
Width="1177">
</s:ScatterView></pre>
Coding behind the surfacelistbox to load the images
#region images
private void loadAllImages()
{
int counter = 0;
foreach (string file in Directory.GetFiles("C:/Users/leeying/Desktop/PhotoSharing 1.6/SurfaceBluetoothV2/image", "*.jpg"))
{
System.Windows.Controls.Image img = new System.Windows.Controls.Image();
img.Source = new BitmapImage(new Uri(file));
Viewbox vb = new Viewbox { Width = 230, Child = img };
list_img.Items.Insert(counter, vb);
counter++;
}
}
void OnImageSelected(object sender, SelectionChangedEventArgs args)
{
if (list_img.SelectedItem == null) { return; }
// The content of the SelectedItem is a Viewbox that contains the image we want to use for the puzzle.
System.Windows.Controls.Image newPuzzle = (System.Windows.Controls.Image)((Viewbox)list_img.SelectedItem).Child;
//stores the selected image into a ScatterViewItem
System.Windows.Controls.Image currentImg = new System.Windows.Controls.Image();
currentImg.Source = newPuzzle.Source;
ScatterViewItem imgCon = new ScatterViewItem();
imgCon.Content = currentImg;
imgCon.Center = new System.Windows.Point(600, 500);
imgCon.Orientation = 0.0;
imgCon.TouchEnter += new EventHandler<TouchEventArgs>(removeItem);
// Add the Image that was just selected
img_container.Items.Add(imgCon);
ValidateOptions();
list_img.SelectedItem = null;
}
#endregion images
s:SurfaceDragDrop.Drop="Scatter_Drop event coding
private void Scatter_Drop(object sender, SurfaceDragDropEventArgs e)
{
// If it isn't already on the ScatterView,
// add it to the source collection.
if (!ScatterItems.Contains(e.Cursor.Data))
{
ScatterItems.Add((PhotoData)e.Cursor.Data);
}
// Get the ScatterViewItem that Scatter automatically generated.
ScatterViewItem svi =
scatter.ItemContainerGenerator.ContainerFromItem(e.Cursor.Data) as ScatterViewItem;
svi.Visibility = System.Windows.Visibility.Visible;
svi.Width = e.Cursor.Visual.ActualWidth;
svi.Height = e.Cursor.Visual.ActualHeight;
svi.Center = e.Cursor.GetPosition(scatter);
svi.Orientation = e.Cursor.GetOrientation(scatter);
svi.Background = Brushes.Transparent;
// Setting e.Handled to true ensures that default
// behavior is not performed.
e.Handled = true;
}
hello,
Check the ShoppingCart sample provide with Surface SDK 2.0, it has all functionnality your are looking for
regards
serge
这篇关于从surfacelistbox拖放到散点图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!