Saturday 15 May 2010

wpf - How to diplay/call an UserControl from another UserControl at click both situated in one MainWindow (C#/Xaml) -



wpf - How to diplay/call an UserControl from another UserControl at click both situated in one MainWindow (C#/Xaml) -

i'm pretty stuck right now, i'm gonna explain problem , want. in solution have mainwindow, in mainwindow phone call first usercontrol situated in usercontrollibrary. i'ts menu button. want when click on first button of first usercontrol, want set visibility of second usercontrol visible (too situated in usercontrollibrary). seek many things no 1 works.

the first usercontrol uc_menuslider , uc_start_study sec have visibile after click on button on first one. @ launch uc_start_study hidden.

this part of code of mainwindow:

<grid name="maingrid"> <grid.columndefinitions> <columndefinition width="*"/> </grid.columndefinitions> <usercontrollibrary:uc_startstudy x:name="uc_start_study" grid.column="1" height="auto" width="auto" margin="70 0 0 0" visibility="hidden"/> <grid> <grid.columndefinitions> <columndefinition width="0.1*" maxwidth="240" minwidth="240" /> <columndefinition width="*"/> </grid.columndefinitions> <usercontrollibrary:uc_menuslider x:name="uc_menuslider" grid.column="0"/> </grid> </grid>

a part of code of first usercontrol (uc_menuslider):

<grid name="grid_menu" horizontalalignment="stretch"> <grid.rowdefinitions> <rowdefinition height="*"/> </grid.rowdefinitions> <button x:name="start_study" grid.row="0" grid.column="0" margin="0" content="start study" fontsize="16" click="start_study_click"> </button> </grid>

at first basic event,just event click in first usercontrol. code behind that:

public void start_study_click(object sender, routedeventargs e) { var startstudy = new usercontrollibrary.uc_startstudy(); startstudy.visibility = visibility.visible; }

don't works. utilize 'routedevent' don't understand works.

i hope question plenty clear, in advance anwsers

the problem because creating new uc_startstrudy , set visibility visible. need set visibility of 1 in xaml: uc_start_study

public void start_study_click(object sender, routedeventargs e) { uc_start_study.visibility = visibility.visible; }

and utilize xaml databinding visibility property of uc_startstrudy, , set value in code:

xaml:

<window.resourses> <booleantovisibilityconverter x:key="booltovisible" /> </window.resourse> ..... <usercontrollibrary:uc_startstudy x:name="uc_start_study" grid.column="1" height="auto" width="auto" margin="70 0 0 0" visibility="{binding isucstartstudyvisible, converter={staticresource booltovisible}}"/>

code (remember implement inotifypropertychanged ):

//implement inotifypropertychanged public event propertychangedeventhandler propertychanged; private void raisepropertychange(string propertyname = "") { if (propertychanged != null) { propertychanged(this, new propertychangedeventargs(propertyname)); } } //property info binding private bool _isucstartstudyvisible = false; public bool isucstartstudyvisible { get{return _isucstartstudyvisible;} set{_isucstartstudyvisible=value; raisepropertychange("isucstartstudyvisible");} } //your event alter visibility public void start_study_click(object sender, routedeventargs e) { isucstartstudyvisible=true; }

c# wpf xaml user-controls

No comments:

Post a Comment