c# - Add user control on a button click from another user control -
i have 2 user control , when click on button first user control ,another user control shows : first user control is:
using system; using system.collections.generic; using system.collections.objectmodel; using system.linq; using system.text; using system.threading.tasks; using system.windows; using system.windows.controls; using system.windows.data; using system.windows.documents; using system.windows.input; using system.windows.media; using system.windows.media.imaging; using system.windows.navigation; using system.windows.shapes; namespace navigateur.presentation.usercontrolwork { /// <summary> /// logique d'interaction pour listeblanche.xaml /// </summary> public partial class listeblanche : usercontrol { public listeblanche() { initializecomponent(); } private async void button_click_1(object sender, routedeventargs e) { servicereferenceparent.parentserviceclient wcfparent = new servicereferenceparent.parentserviceclient(); bool existe = await wcfparent.loginasync(textmail.text, textpass.text); if (existe) { //grid.children.remove(this); //this.visibility = system.windows.visibility.collapsed; //parentcontrol parmain = new parentcontrol(); //parmain.visibility = system.windows.visibility.visible; //parmain. } else { popup1.isopen = true; } } private void button_click_2(object sender, routedeventargs e) { mainwindow main = new mainwindow(); parentcontrol parmain = new parentcontrol(); main.gridmain.children.add(parmain); parmain.visibility = system.windows.visibility.visible; this.visibility = system.windows.visibility.hidden; } } } and when click on "button_click_2",parentcontrol shows never shows.
fullscreen: parencontrol xaml code:
`<usercontrol x:class="navigateur.presentation.usercontrolwork.parentcontrol" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" mc:ignorable="d" width="586.194" height="316.418"> <grid background="#ff65b4ec" cliptobounds="true"> <canvas horizontalalignment="left" height="69" verticalalignment="top" width="586" background="#ff5acaff" cliptobounds="true"> <label content="création de votre compte parent" canvas.left="188" canvas.top="20" rendertransformorigin="0.5,0.5" width="155" background="#ff65b4ec" fontweight="black"> <label.rendertransform> <transformgroup> <scaletransform/> <skewtransform/> <rotatetransform angle="-0.376"/> <translatetransform/> </transformgroup> </label.rendertransform> </label> </canvas> <label content="nom compte" horizontalalignment="left" margin="121,106,0,0" verticalalignment="top"/> <label content="pseudo" horizontalalignment="left" margin="323,165,0,0" verticalalignment="top" rendertransformorigin="0.498,0.006"/> <label content="prénom" horizontalalignment="left" margin="121,219,0,0" verticalalignment="top"/> <label content="nom" horizontalalignment="left" margin="323,214,0,0" verticalalignment="top" rendertransformorigin="-0.2,0.471"/> <textbox horizontalalignment="left" height="23" margin="121,132,0,0" textwrapping="wrap" verticalalignment="top" width="335"/> <textbox horizontalalignment="left" height="23" margin="323,191,0,0" textwrapping="wrap" verticalalignment="top" width="133"/> <radiobutton content="monsieur" horizontalalignment="left" margin="121,191,0,0" verticalalignment="top" height="23"/> <radiobutton content="madame" horizontalalignment="left" margin="192,191,0,0" verticalalignment="top" height="23"/> <textbox horizontalalignment="left" height="23" margin="121,245,0,0" textwrapping="wrap" verticalalignment="top" width="131"/> <textbox horizontalalignment="left" height="23" margin="323,245,0,0" textwrapping="wrap" verticalalignment="top" width="133" rendertransformorigin="0.5,0.5"/> <button content="annuler" horizontalalignment="left" margin="192,288,0,0" verticalalignment="top" width="75" height="23"/> <button content="suivant" horizontalalignment="left" margin="297,288,0,0" verticalalignment="top" width="75"/> </grid> </usercontrol>` and main window xaml code:
<window x:name="wndmain" x:class="navigateur.presentation.mainwindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:auth="clr-namespace:navigateur.presentation.usercontrolwork" title="mainwindow" height="317" width="586.194" windowstate="maximized" windowstyle="none" topmost="true" resizemode="noresize"> <grid x:name="gridmain"> <auth:listeblanche clickedinusercontrol="onclickedinusercontrol"></auth:listeblanche> </grid> </window>
i think need use routedevent in usercontrol work.
so change click event in usercontrol to:
public event routedeventhandler clickedinusercontrol; private void button_click_2(object sender, routedeventargs e) { if (clickedinusercontrol != null) { clickedinusercontrol(this, new routedeventargs()); } } then in mainwindow's xaml add usercontrol:
clickedinusercontrol="onclickedinusercontrol" and add event handler on mainwindow's codebehind
private void onclickedinusercontrol(object sender, routedeventargs e) { parentcontrol parmain = new parentcontrol(); this.gridmain.children.add(parmain); parmain.visibility = system.windows.visibility.visible; // remove original usercontrol grid , collapse it's vilisibilty } also, highly recommend using commands rather events kind of thing, used events because that's working with.
Comments
Post a Comment