this dependency property:
public static readonly dependencyproperty buttontapsoundproperty = dependencyproperty.registerattached("buttontapsound", typeof (uri), typeof (buttondependencyobject), new propertymetadata(default(uri), urichanged));
i use this:
<button buttondependencyobject:buttondependencyobject.buttontapsound="{binding elementname=tapsound}" ... />
this works @ design time , run time.
however if define inside control template this:
<controltemplate x:name="tapsound" targettype="button"> <button buttondependencyobject:buttondependencyobject.buttontapsound="{binding elementname=tapsound}" ... /> </controltemplate>
it works @ runtime not in visual studio designer
due lack of further source code can refer implemenation guidelines of msdn dependency properties.
create seperate class sound button derives button
e.g "soundbutton" , register property getter , setter.
class soundbutton : button { public uri buttontapsound { { return (uri)getvalue(buttontapsoundproperty); } set { setvalue(buttontapsoundproperty, value); } } public static readonly dependencyproperty buttontapsoundproperty = dependencyproperty.register("buttontapsound", typeof(uri), typeof(soundbutton), new propertymetadata(default(uri), new propertychangedcallback(onurichanged))); private static void onurichanged(dependencyobject d, dependencypropertychangedeventargs e) { //your code } }
then can use in code is, without registering dependecy property in xaml:
<local:soundbutton buttontapsound="{binding elementname=tapsound}"></local:soundbutton>
this may not done in style, should solve designer issues.
Comments
Post a Comment