.NET Tutorials, Forums, Interview Questions And Answers
Welcome :Guest
Sign In
Win Surprise Gifts!!!

Top 5 Contributors of the Month
david stephan
Gaurav Pal
Post New Web Links

Drag-move canvas and its children

Posted By:      Posted Date: October 05, 2010    Points: 0   Category :WPF

With VS2008, I have created a Canvas in a ScrollViewer, in which I place an Image which I overlay with Buttons and StackPanels. This far, everything works as I'd want to, but my next challenge is to implement a drag-move behavior where the user can click on the Image and drag it in every direction. I figured out how I should move just the Image, but the problem is that the Buttons and StackPanels stay in place, where I really want them to be moved with Image as well. Trying to convert the drag-the-Image-method to a sort of drag-the-Canvas one did not work out for me.

So my layout is structured like this:


View Complete Post

More Related Resource Links

Move all children on canvas or preferrably move the entire canvas



I´m working on a small app that parses the gpx file from the GPS. It will animate how me and my dog moves when we go hunting. I want to zoom in so that I can analyse how the dog is working and therefore need the graph to scroll and keep my position centered.

Yesterday I used a Canvas and plotted my points as black rectangles and the dog as red rectangles. Then used the SetLeft and SetTop to scroll the Canvas. I then added a polyline connecting the dogs points but didnt find StLeft and SetTop for the polyline. Played around with RenderTransform but never got it working.

1. My question is is canvas suitable for this?

2. Is there a way to move the entire canvas and all its children in one command?

3. Is there a generic way that can be used to move all UIElements.

By move I mean move relative an element relative to its current position, for example 2 pixels left and 5 pixels up.



Trying to learn

Move cursor position during drag drop operation



I know how to change to a custom cusor or visual instead of a standard cursor during drag and drop operations.  I know how to get the current mouse position during drag and drop methods (often there is a GetPosition method, or alternatively I can use p/invoke or System.Windows.Forms.Cursor.MousePosition getter).

My question is, how can I (or is it not possible) to change the mouse position programmatically during the drag/drop operation, ideally just before the drop occurs so that items are dropped at the point of the programmatically set cursor position? 

I tried to to use the System.Windows.Forms.Position setter and SetCursorPos both in the source's PreviewQueryContinueDrag handler and the target's PreviewDrop handler but neither affected the position of where the items were dropped.  In the case of PreviewQueryContinueDrag, the mouse visually moved to the programmatic location after the items were dropped, even though the PreviewQueryContinueDrag handler was called before the item was dropped (and before PreviewDrop).

Any ideas?



Move cursor position during drag drop operation



I'm enhancing the behaviour of out of the box WF designer drag/drop experience.  One of the things I'm trying to do (in part) is when a toolbox item is drag over an existing activity designer and then dropped, I want the toolbox item's activity to be dropped close to the activity designer on which it was to be dropped, but not directly on top of the designer.

To accomplish this, I detect when a drop operation is about to occur and then I attempt to move the cursor position next to the activity designer.  The problem I'm having is moving the cursor during the drop operation.  I've tried various ways to do this programmatically, but nothing seems to work.  Or, perhaps it is getting moved but then the workflow designer (and in particular the flowchart designer) does something special with mouse position or otherwise ignores it. 

I started out posting this question on the WPF forum, but now I'm beginning to wonder if perhaps there is something unique to  the WF/flowchart designer that's causing the mouse not to move (or to move back to the original position perhaps) rather than a general issue with moving the mouse during drag/drop operations.

Can anyone provide any guidance?



Zooming in/out on canvas: how to leave some children unscaled?


I'm working with Visual Studio 2008 and I have created a window with a Canvas in a ScrollViewer. On the canvas, I've placed an image and the code I've written places buttons on the canvas at certain locations. So far, so good, but I'm trying to implement a zooming method which scales the canvas and the image, but leaves the buttons intact in terms of size and content -- however, their location should scale together with the image and the canvas.
What I have thusfar is this:

private void zoomIn(Object sender, MouseButtonEventArgs e)
  mapCanvas.Width *= ZoomFactor;
  mapCanvas.Height *= ZoomFactor;
  Zoom *= ZoomFactor;
  TransformGroup transform = new TransformGroup();
  transform.Children.Add(new ScaleTransform(Zoom, Zoom));
  transform.Children.Add(new TranslateTransform(0, 0));
  mapCanvas.RenderTransform = transform;

This, together with an analogue zoomOut method, works like a charm, but the buttons are scaled as well, obviously because RenderTransform is applied to every child of the canvas as well.

My question is: how can I leave the buttons unscaled?

Get location of Children of a Canvas


I'm having some trouble determining the location of UIElements on a Canvas, StackPanels to be exact. I want to be able to compare their location to a given location, but I don't see how I should get their location.

Does anybody have an idea?

drag and drop into transparent canvas on transparent window




Short version: how can I drag/drop into a transparent window.


Long version:

I have a transparent borderless window with a transparent canvas in it. The canvas can hold usercontrols that can be dragged around (like gadgets, widgets).

I want the user to be able to click anywhere outside the gadgets but within the canvas and hit whatever that is behind, like other windows from other programs or icons on the desktop for example. This is easy because everything is transparent except the gadgets. The problem comes when I want to drag new gadgets in from another window. When the window and canvas is transparent, it is not allowed to drop anything on them... (the drop target canvas is not registering any mouse events)

So what I want is some kind of partial HitTestVisibility. For MouseDown in the canvas, it should be HitTestVisible=false, but when I drag something (my own stuff, not  files for example) over the canvas, it should be able to drop it.

I have tried setting the opacity of the background to 0.01 when entering the window with the mouse, that works sometimes if I have a small border that the mouseenter event can trigger on, but if I move the mouse to fast, it wont work.... So a 100% fool proof way of enabling Drop on a transparent control would be nice :)



Editor's Note: A Look Back As We Move Forward


Here's a look at a year's worth of coverage and changes at MSDN Magazine in response to reader requests.

Howard Dierking

MSDN Magazine January 2009

Wicked Code: Drag and Drop with ASP.NET AJAX


Jeff Prosise shows how you can implement drag-and-drop functionality in your Web app with ASP.NET AJAX.

Jeff Prosise

MSDN Magazine January 2008

GridView: Move Over DataGrid, There's a New Grid in Town!


When incorporating the ASP.NET DataGrid control into your Web apps, common operations such as paging, sorting, editing, and deleting data require more effort than you might like to expend. But all that is about to change. The GridView control--the successor to the DataGrid-- extends the DataGrid's functionality it in a number of ways. First, it fully supports data source components and can automatically handle data operations, such as paging, sorting, and editing, as long as its bound data source object supports these capabilities. In addition, the GridView control offers some functional improvements over the DataGrid. Here DataGrid expert Dino Esposito introduces the GridView and explains all its long-awaited features.

Dino Esposito

MSDN Magazine August 2004

C++ -> C#: What You Need to Know to Move from C++ to C#


C# builds on the syntax and semantics of C++, allowing C programmers to take advantage of .NET and the common language runtime. While the transition from C++ to C# should be a smooth one, there are a few things to watch out for including changes to new, structs, constructors, and destructors. This article explores the language features that are new to C# such as garbage collection, properties, foreach loops, and interfaces. Following a discussion of interfaces, there's a discussion of properties, arrays, and the base class libraries. The article concludes with an exploration of asynchronous I/O, attributes and reflection, type discovery, and dynamic invocation.

Jesse Liberty

MSDN Magazine July 2001

ASP.NET: Web Forms Let You Drag And Drop Your Way To Powerful Web Apps


Web Forms have the potential to change Web programming by introducing a new programming model built around server-side controls-a model in which controls render their own UIs by generating HTML to return to clients and firing events that are handled by server-side scripts. Since all the action takes place on the Web server, virtually any browser can run a Web Forms app. And thanks to Visual Studio .NET, building a Web Forms app is a lot like using Visual Basic: just drop a control onto a form then write an event handler. This article describes the Web Forms programming model, how it fits with ASP.NET, and introduces DataGrid, TextBox, and other classes in the .NET Framework class library.

Jeff Prosise

MSDN Magazine May 2001

Scott Howlett and Jeff Dunmall: Drag and Drop Data Manipulation Powered by XML


Building on the browser-based org chart featuring VML (Vector Markup Language) described previously in Microsoft Internet Developer, this article takes you through the process of refining that sample app by using XML, XSL, and JScript code to create a new, improved version. Drag and drop editing is added to the org chart interface thanks to built-in support found in Internet Explorer 5.0. XML and JScript allow data manipulated on the screen to be saved back to the server in its native format. The final product of this combination of XML, XSL, and VML is a high performance, scalable Internet app that uses processing on the client to reduce stress for the server.

Scott Howlett and Jeff Dunmall

MSDN Magazine March 2000

Treeview: Select all children if Parent is selected etc...



I'm using a Treeview with  ShowCheckBoxes="All" , so basically I have a tree with all CheckBox Nodes. I'm using the TreeView inside an update panel, and populate the Tree code behind dynamically.

My requrements are the following:

1) Select all the children if parent is selected,

2) When parent is selected, and if we de-select a child, set parent unselected

3) Track if new nodes were selected and previously selected nodes were de-selected (becasue I need to update the database according to the selections in the Tree)

For above 1, I do the following:

protected void TreeView1_TreeNodeCheckChanged(object sender, TreeNodeEventArgs e)
        foreach (TreeNode node in TreeView1.Nodes)
            TreeNodeCollection col = node.ChildNodes;
            //select all children when the parent is checked
            if (col != null && node.Checked)

'Meter number is not registered ' error FedEx ship web service move to production



I want to integrate FedEx ship web service in my website. It works fine for local but for production it gives error. I changed test credentials by production credentials. also changed test url "https://gatewaybeta.fedex.com:443/webservices" by production url "https://gateway.fedex.com:443/webservices" But I am getting error that meter number is not registered. Please advice.

ASP.NetWindows Application  .NET Framework  C#  VB.Net  ADO.Net  
Sql Server  SharePoint  Silverlight  Others  All   

Hall of Fame    Twitter   Terms of Service    Privacy Policy    Contact Us    Archives   Tell A Friend