ToggleButton.cs CampusAppWP8::Utility::Lui::Button::ToggleButton CampusAppWP8::Utility::Lui::Button //----------------------------------------------------------------------- //<copyrightfile="ToggleButton.cs"company="BTU/IIT"> //Companycopyrighttag. //</copyright> //<author>stubbfel</author> //<sience>08.07.2013</sience> //---------------------------------------------------------------------- namespaceCampusAppWP8.Utility.Lui.Button { usingSystem.Collections.Generic; usingSystem.Windows; usingSystem.Windows.Controls; publicclassToggleButton:System.Windows.Controls.Button { #regionMembers #regionpublic publicstaticreadonlyDependencyPropertyToggleContentTagProperty=DependencyProperty.Register("ToggleContentTag",typeof(object),typeof(ToggleButton),newPropertyMetadata(false)); #endregion #regionprivate privateList<FrameworkElement>toggleElements=null; privateToggleButtonHandlereventHandler; #endregion #endregion #regionConstructors publicToggleButton() :base() { } #endregion #regionEvents privatedelegatevoidToggleButtonHandler(); privatestaticeventToggleButtonHandlerCloseButtonEvent; #endregion #regionProberties publicobjectToggleContentTag { get{return(object)this.GetValue(ToggleContentTagProperty);} set{this.SetValue(ToggleContentTagProperty,value);} } #endregion #regionMethods #regionpublic publicvoidToggleToggleContent() { if(this.toggleElements!=null) { //closetheold(other)Button if(CloseButtonEvent!=null&&!CloseButtonEvent.Equals(this.eventHandler)) { CloseButtonEvent(); } foreach(UIElementelmentinthis.toggleElements) { this.ToggleToggleContentElement(elment); } } } publicvoidShowToggleContent() { if(this.toggleElements!=null) { foreach(UIElementelmentinthis.toggleElements) { this.ShowToggleContentElement(elment); } } } publicvoidHideToggleContent() { if(this.toggleElements!=null) { foreach(UIElementelmentinthis.toggleElements) { this.HideToggleContentElement(elment); } } } #endregion #regionprotected protectedoverridevoidOnClick() { if(this.toggleElements==null) { this.SetupToggleElements(); } this.ToggleToggleContent(); } #endregion #regionprivate privatevoidSetupToggleElements() { this.toggleElements=newList<FrameworkElement>(); Panelparent=this.ParentasPanel; if(parent==null) { parent=this.GetFirstParentPanel(); } foreach(FrameworkElementelementinparent.Children) { stringelementTag=element.Tagasstring; if(elementTag!=null&&elementTag.Contains(this.ToggleContentTagasstring)) { this.toggleElements.Add(element); break; } } } privatePanelGetFirstParentPanel() { FrameworkElementparentElement=this.ParentasFrameworkElement; PanelparentPanel=parentElementasPanel; while(parentPanel==null) { parentElement=parentElement.ParentasFrameworkElement; if(parentElement==null) { break; } parentPanel=parentElementasPanel; } returnparentPanel; } privatevoidToggleToggleContentElement(UIElementelement) { if(element!=null) { if(Visibility.Collapsed.Equals(element.Visibility)) { this.ShowToggleContentElement(element); } else { this.HideToggleContentElement(element); } } } privatevoidShowToggleContentElement(UIElementelement) { if(element!=null) { element.Visibility=Visibility.Visible; if(this.eventHandler==null) { this.eventHandler=newToggleButtonHandler(this.HideToggleContent); CloseButtonEvent+=this.eventHandler; } } } privatevoidHideToggleContentElement(UIElementelement) { if(element!=null) { element.Visibility=Visibility.Collapsed; if(this.eventHandler!=null) { CloseButtonEvent-=this.eventHandler; this.eventHandler=null; } } } #endregion #endregion } }