xaml - WPF GroupBox header Alignment issue -


how can align groupbox header center rather default left positioning.

i read in many post 1 can use template have no idea such thing. please let me know how can header @ center.

thanks !!

yes, you'll have modify template.

for center-alignment see this answer thomas levesque
right-alignment see this answer mihir gokani

uploaded sample project containing both center-alignment , right-alignment here: http://www.mediafire.com/?hd2vbwr97ep7yis

center-alignment using same approach thomas

usable this

<groupbox header="centered header"           style="{staticresource centeredheadergroupboxstyle}"           .../> 

centeredheadergroupboxstyle

<local:centerbordergapmaskconverter x:key="centerbordergapmaskconverter"/> <style x:key="centeredheadergroupboxstyle" targettype="{x:type groupbox}">     <setter property="borderbrush" value="#d5dfe5"/>     <setter property="borderthickness" value="1"/>     <setter property="template">         <setter.value>             <controltemplate targettype="{x:type groupbox}">                 <grid snapstodevicepixels="true">                     <grid.columndefinitions>                         <columndefinition width="6"/>                         <columndefinition width="auto"/>                         <columndefinition width="*"/>                         <columndefinition width="6"/>                     </grid.columndefinitions>                     <grid.rowdefinitions>                         <rowdefinition height="auto"/>                         <rowdefinition height="auto"/>                         <rowdefinition height="*"/>                         <rowdefinition height="6"/>                     </grid.rowdefinitions>                     <border borderbrush="transparent" borderthickness="{templatebinding borderthickness}" background="{templatebinding background}" grid.columnspan="4" grid.column="0" cornerradius="4" grid.row="1" grid.rowspan="3"/>                     <border grid.zindex="2" x:name="header" grid.column="2" horizontalalignment="center" padding="3,1,3,0" grid.row="0" grid.rowspan="2">                         <contentpresenter contentsource="header" recognizesaccesskey="true" snapstodevicepixels="{templatebinding snapstodevicepixels}"/>                     </border>                     <contentpresenter grid.columnspan="2" grid.column="1" margin="{templatebinding padding}" grid.row="2" snapstodevicepixels="{templatebinding snapstodevicepixels}"/>                     <border rendertransformorigin="0.5,0.5" borderbrush="white" borderthickness="{templatebinding borderthickness}" grid.columnspan="4" cornerradius="4" grid.row="1" grid.rowspan="3">                         <border.opacitymask>                             <multibinding converterparameter="7" converter="{staticresource centerbordergapmaskconverter}">                                 <binding elementname="header" path="actualwidth"/>                                 <binding path="actualwidth" relativesource="{relativesource self}"/>                                 <binding path="actualheight" relativesource="{relativesource self}"/>                             </multibinding>                         </border.opacitymask>                         <border borderbrush="{templatebinding borderbrush}" borderthickness="{templatebinding borderthickness}" cornerradius="3">                             <border borderbrush="white" borderthickness="{templatebinding borderthickness}" cornerradius="2"/>                         </border>                     </border>                 </grid>             </controltemplate>         </setter.value>     </setter> </style> 

centerbordergapmaskconverter

class centerbordergapmaskconverter : imultivalueconverter {     // methods     public object convert(object[] values, type targettype, object parameter, cultureinfo culture)     {         type type = typeof(double);         if (values == null             || values.length != 3             || values[0] == null             || values[1] == null             || values[2] == null             || !type.isassignablefrom(values[0].gettype())             || !type.isassignablefrom(values[1].gettype())             || !type.isassignablefrom(values[2].gettype()))         {             return dependencyproperty.unsetvalue;         }          double pixels = (double)values[0];         double width = (double)values[1];         double height = (double)values[2];         if ((width == 0.0) || (height == 0.0))         {             return null;         }         grid visual = new grid();         visual.width = width;         visual.height = height;         columndefinition coldefinition1 = new columndefinition();         columndefinition coldefinition2 = new columndefinition();         columndefinition coldefinition3 = new columndefinition();         coldefinition1.width = new gridlength(1.0, gridunittype.star);         coldefinition2.width = new gridlength(pixels);         coldefinition3.width = new gridlength(1.0, gridunittype.star);         visual.columndefinitions.add(coldefinition1);         visual.columndefinitions.add(coldefinition2);         visual.columndefinitions.add(coldefinition3);         rowdefinition rowdefinition1 = new rowdefinition();         rowdefinition rowdefinition2 = new rowdefinition();         rowdefinition1.height = new gridlength(height / 2.0);         rowdefinition2.height = new gridlength(1.0, gridunittype.star);         visual.rowdefinitions.add(rowdefinition1);         visual.rowdefinitions.add(rowdefinition2);         rectangle rectangle1 = new rectangle();         rectangle rectangle2 = new rectangle();         rectangle rectangle3 = new rectangle();         rectangle1.fill = brushes.black;         rectangle2.fill = brushes.black;         rectangle3.fill = brushes.black;         grid.setrowspan(rectangle1, 2);         grid.setrow(rectangle1, 0);         grid.setcolumn(rectangle1, 0);         grid.setrow(rectangle2, 1);         grid.setcolumn(rectangle2, 1);         grid.setrowspan(rectangle3, 2);         grid.setrow(rectangle3, 0);         grid.setcolumn(rectangle3, 2);         visual.children.add(rectangle1);         visual.children.add(rectangle2);         visual.children.add(rectangle3);         return new visualbrush(visual);     }     public object[] convertback(object value, type[] targettypes, object parameter, cultureinfo culture)     {         return new object[] { binding.donothing };     } } 

Comments

Popular posts from this blog

javascript - Enclosure Memory Copies -

php - Replacing tags in braces, even nested tags, with regex -