从surfacelistbox拖放到散点图 [英] Drag and drop from surfacelistbox to scatter view

查看:41
本文介绍了从surfacelistbox拖放到散点图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想从surfacelistbox拖放到分散视图。 

以下是我的编码,但它无法正常工作。谁有人可以帮忙?谢谢你


这是surfacelistbox.xaml代码

< s:SurfaceListBox

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;高度=&"1080& quot;

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;的Horizo​​ntalAlignment =安培; 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; Horizo​​ntalContentAlignment =& 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.Horizo​​ntalScrollBarVisibility =& 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; Horizo​​ntalAlignment =& 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=&quot;1080&quot;
            HorizontalAlignment=&quot;Left&quot; Name=&quot;list_img&quot;
            VerticalAlignment=&quot;Top&quot;
            Width=&quot;250&quot;
            SelectionMode=&quot;Single&quot;
            BorderThickness=&quot;0&quot;
            HorizontalContentAlignment=&quot;Stretch&quot;
            VerticalContentAlignment=&quot;Stretch&quot;
            ScrollViewer.VerticalScrollBarVisibility=&quot;Hidden&quot;
            ScrollViewer.HorizontalScrollBarVisibility=&quot;Hidden&quot;
            Background=&quot;#33CCCCCC&quot;
            SelectionChanged=&quot;OnImageSelected&quot;
            AllowDrop=&quot; />

Scatterview. xaml code
<pre lang="xml">&lt;s:ScatterView
                    Name=&quot;img_container&quot;
                    HorizontalAlignment=&quot;Center&quot;
                    Height=&quot;962&quot;
                    Margin=&quot;256,12,237,106&quot;
                    AllowDrop="True"
                    s:SurfaceDragDrop.Drop="Scatter_Drop" // scatter drop event
                    Width=&quot;1177&quot;&gt;
                    

        &lt;/s:ScatterView&gt;</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&lt;TouchEventArgs&gt;(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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆