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

Popular posts from this blog

php - SPIP: From Tag directly to an article -

jquery - isAjaxRequest always return false -

ruby on rails - In a controller spec, how to find a specific tag in the generated view? -