c# - WPF contextMenu control for bring forward and send backward -
having trouble here i'm hoping simple.
i have custom usercontrol in wpf allows me display image. when program running user can add usercontrol many times canvas. in effect simple image viewer can add , move images about.
i able right click these images open contextmenu , choose send backward of bring forward , images change z order depending menu choice clicked.
i have user control set contextmenu need know code changing z order of usercontrol...
any appreciated :)
namespace storyboardtool { /// <summary> /// interaction logic customimage.xaml /// </summary> public partial class customimage : usercontrol { private point mouseclick; private double canvasleft; private double canvastop; public customimage() { initializecomponent(); cusimagecontrol.setvalue(canvas.leftproperty, 0.0); cusimagecontrol.setvalue(canvas.topproperty, 0.0); } public void chooseimage() { openfiledialog ofd = new openfiledialog(); ofd.title = "choose image add"; if (ofd.showdialog() == true) { bitmapimage bimage = new bitmapimage(); bimage.begininit(); bimage.urisource = new uri(ofd.filename); bimage.endinit(); image.width = bimage.width; image.height = bimage.height; image.source = bimage; image.stretch = stretch.fill; } } private void cusimagecontrol_lostmousecapture(object sender, mouseeventargs e) { ((customimage)sender).releasemousecapture(); } private void cusimagecontrol_mouseup(object sender, mousebuttoneventargs e) { ((customimage)sender).releasemousecapture(); cusimagecontrol.cursor = cursors.arrow; } private void cusimagecontrol_mousemove(object sender, mouseeventargs e) { if ((((customimage)sender).ismousecaptured) && (cusimagecontrol.cursor == cursors.sizeall)) { point mousecurrent = e.getposition(null); double left = mousecurrent.x - mouseclick.x; double top = mousecurrent.y - mouseclick.y; mouseclick = e.getposition(null); ((customimage)sender).setvalue(canvas.leftproperty, canvasleft + left); ((customimage)sender).setvalue(canvas.topproperty, canvastop + top); canvasleft = canvas.getleft(((customimage)sender)); canvastop = canvas.gettop(((customimage)sender)); } else if ((((customimage)sender).ismousecaptured) && (cusimagecontrol.cursor == cursors.sizenwse)) { /*point mousecurrent = e.getposition(null); cusimagecontrol.height = cusimagecontrol.canvastop + mouseclick.y; cusimagecontrol.width = cusimagecontrol.canvasleft + mouseclick.x; mouseclick = e.getposition(null);*/ } } private void cusimagecontrol_mousedown(object sender, mousebuttoneventargs e) { mouseclick = e.getposition(null); canvasleft = canvas.getleft(((customimage)sender)); canvastop = canvas.gettop(((customimage)sender)); ((customimage)sender).capturemouse(); } private void contextmenubringforward_click(object sender, routedeventargs e) { messagebox.show("bring forward"); } private void contextmenusendbackward_click(object sender, routedeventargs e) { messagebox.show("send backward"); } private void contextmenumove_click(object sender, routedeventargs e) { cusimagecontrol.cursor = cursors.sizeall; } private void contextmenuresize_click(object sender, routedeventargs e) { cusimagecontrol.cursor = cursors.sizenwse; } } }
see panel attached property canvas.setzindex. change z-index of elements 0, , z-index of right-clicked control 1.
void mouseup(object sender, mousebuttoneventargs e) { foreach (var child in yourcanvas.children) canvas.setzindex(child, 0); canvas.setzindex((uielement)sender, 1); }
Comments
Post a Comment