c# - Extending a Separator (Deriving from) -


i have implement custom separator, few custom properties (the main 1 header):

public class headeredseparator : separator {     //more properties here... headerforeground , separatorheight.     public static readonly dependencyproperty headerproperty = dependencyproperty.register("header", typeof(string), typeof(headeredseparator));      [bindable(true), category("common")]     public string header     {         { return (string)getvalue(headerproperty); }         set { setvalue(headerproperty, value); }     }      static headeredseparator()     {         defaultstylekeyproperty.overridemetadata(typeof(headeredseparator), new frameworkpropertymetadata(typeof(headeredseparator)));     } } 

and style (inside themes\generic.xaml):

<style x:key="{x:static menuitem.separatorstylekey}" targettype="{x:type c:headeredseparator}">     <setter property="isenabled" value="false"/>     <setter property="height" value="auto"/>     <setter property="separatorheight" value="1"/>     <setter property="foreground" value="#ffe0e3e6"/>     <setter property="headerforeground" value="#ff202326"/>     <setter property="fontsize" value="12"/>     <setter property="verticalcontentalignment" value="center"/>     <setter property="horizontalcontentalignment" value="stretch"/>     <setter property="horizontalalignment" value="stretch"/>      <setter property="template">         <setter.value>             <controltemplate targettype="{x:type c:headeredseparator}">                 <grid margin="0,4" horizontalalignment="stretch">                     <grid.columndefinitions>                         <columndefinition width="auto"/>                         <columndefinition/>                     </grid.columndefinitions>                      <textblock grid.column="0" text="{templatebinding header}" fontsize="{templatebinding fontsize}"                                 foreground="{templatebinding headerforeground}"/>                      <rectangle grid.column="1" height="{templatebinding separatorheight}" fill="{templatebinding foreground}"                                verticalalignment="{templatebinding verticalcontentalignment}"                                 horizontalalignment="{templatebinding horizontalcontentalignment}"                                stretch="fill"/>                 </grid>             </controltemplate>         </setter.value>     </setter> </style> 

(edit) usage:

<c:headeredseparator header="itens"/> 

this separator supposed display header while being used inside menu. that's why i'm using key attribute, reason, isn't working (the default style being loaded). guys know why?


Comments

Popular posts from this blog

amazon web services - S3 Pre-signed POST validate file type? -

c# - Check Keyboard Input Winforms -