How to imitate zune panning control - wpf

I'm looking to imitate the following control, found in the zune software, in the quickplay tab. When you move the mouse from left to right the boxes new, pinned and history move to the opposite direction.
I'm thinking of applying a method to the mousemove handler which checks for the relative position of the cursor and then moves a grid containing panels accordingly but before I try to reinvent the wheel I'd like to ask around if there are people who have more experience with this, especially getting a fluid motion.
Please let me know

Do you mean something like this http://sachabarber.net/?p=829

Related

How to scroll contents WHILE scrolling

I have created a usercontrol that is essentially a text editor (using Graphics.Drawstring in OnPaint).
I have set AutoScroll = true, and AutoScrollMinSize values appropriately. Everything is working how it should...
EXCEPT, i would like the control to scroll itself WHILST I am currently scrolling (i.e. click and drag the scroll bar... and whilst it is being dragged the control should be scrolling the entire time). At the moment it only scrolls when the scroll bar is released (mouse up).
I have tried implementing _Scroll and invalidating the control, but that just makes it flicker uncontrollably.
I cannot find any examples online for this, due to it being difficult to describe!
Can anyone point me in the right direction please?
Control.Invalidate() will make something flicker badly. I faced this problem drawing cross-hairs over a mouse position on a PictureBox drawing a line chart before. The trick is to use (and I cant remember which one is best to come first)
Control.Update();
Control.Refresh();
in the Scroll event. Depending on what else you are drawing in the Control and how you are drawing it this may be better for you. Also this is tested on PictureBox, Control may be another matter.

Silverlight MapLayer right click issue

I am currently developing a Silverlight OOB application using the Bing Map Control, however I have come across an issue I am struggling to resolve. Basically I have three map layers:-
Base Map (bottom layer)
Icon / Pushpin layer (middle layer)
Shape / drawing layer (top layer)
This all works fine, I have put mouse right click functionality on each of my icons (pushpins if you prefer), if I add a map polygon or polyline to the top layer and this item happens to cover the same area as one of my icons in the middle layer I can no longer get any of the mouse events to fire on my icon.
If anyone can think of a way I can pass the mouse operations from my top layer objects to the middle layer objects please let me know.
Many thanks in advance
Set the IsHitTestVisible of your top layer to false. I feel I need to type more text here but there really isn't much more to say.
It's not clear from your question if you need both the shape and the icon to get the mouse event.
If all you need is for the icon to get the event, then switch the order of your layers so Icon layer is on top.
If you need both shape and icon to get the event, then (if you keep your order with shapes on top) you would need to have some way to tell what icons a shape covers. Do you have a parent/child releationship between them? If not, can you create one? If you set up an event on the shape, and set up OnEvent handlers for the icons that listen to the events, then you can have the icons react as well.
If you are more clear about what your situation is, I could post some code that could help.

Manage a space where you can move things (Silverlight)

I'm thinking at the better way to manage a "workspace" in my application, where the user could move things in this space, and could pan for instance.
Let's imagine I have my application interface, with some buttons all around, a treeview etc. and in the middle, a Canvas with some widgets the user can move and work with, and he could pan this space to move in it.
For the pan, I was thinking to handle the MouseLeftButtonDown in this space (that switch a boolean "UserMoving" to true), and on the MouseMove, to apply on translation to the space (from the Delta between the 2 events), until I detect a MouseLeftButtonUp, to know he has stopped (UserMoving to false). The problem is that if the user "mouse left button up" not on the space itself (a Canvas), I will never know he has released the mouse. What's the best to manage the fact that he can release the pan (or the drag&drop of a widget) wherever in the application?
Do anybody has already manage something like that and can help me?
You should call the UIElement.CaptureMouse on your Canvas at the mouse down. This will keep the canvas receiving mouse events, even if the user moves outside of it's region.
On mouse up, call ReleaseMouseCapture.

Customize the shape of a scatterview

I'm currently using the Surface SDK 1.0 in Blend and VS2008, and I've encountered a problem: I use a scatterview over the whole screen. I also have a grid in the middle of the screen. The panel in the middle is quite annoying because my scatterviewitems can easily get lost BEHIND the grid, and since the grid is locked in position, there is no way for me to retrieve them.
It would be desireable to add "walls" around the grid, so that my scatterviewitems would bounce off it, as it does at the edges of the scatterview.
How can I solve this problem?
Just hook up to "ScatterManipulationCompleted" and check if the item is under your grid. If yes start a Storyboard which moves the Center of your ScatterViewItem back out of the grids background.
Also take a look at the surface community forums, there are a lot posts regarding ScatterViewItem and collision detection.

How to draw on top of winforms controls with transparency?

I have an app with a bunch of controls in it and I want to place a set of cross hairs on top of it. My first attack used a PictureBox and ran into this problem. The solution that fellow proposes, seems a bit... verbose for what I need.
Is there a simple way draw on top of my form? Note that I don't even need the drawing to be part of a control as it doesn't need to do anything but just be there.
This eventually worked. I had to play some games though because most of the controls I wanted to draw on were not where it expected them to be.
Also, it ran into issues when controls were moved; it failed to redraw and stuff moved with the underlying control. This was fixed by forcing invalidation from the move event for anything that might move.
Does a PictureBox with a transparent image have the same problem as a Panel with BackColor set to Transparent? I'm thinking you could have a PictureBox with the crosshair image in it and move that around, instead of drawing it yourself...

Resources