c# - Style Trigger on sub-property of a DependencyProperty -



c# - Style Trigger on sub-property of a DependencyProperty -

i have command want style depending on set messagetype of custom message type dependencyproperty of control.

custom type:

public class message : observableobject { public messagetypes messagetype { { homecoming _messagetype; } set { raisepropertychanged(() => messagetype); _messagetype = value; } } public string text { ... } ... }

control:

public class messagecontrol : command { public static readonly dependencyproperty messageproperty = dependencyproperty.register( "message", typeof(message), typeof(messagecontrol), new frameworkpropertymetadata(null, frameworkpropertymetadataoptions.bindstwowaybydefault)); public message message { { homecoming (message)getvalue(messageproperty); } set { setvalue(messageproperty, value); } } }

style:

<controltemplate x:key="messagecontroltemplate" targettype="controls:messagecontrol"> <border background="{templatebinding background}"> <textblock text="{binding path=message.text, relativesource={relativesource templatedparent}}" /> </border> </controltemplate> <style targettype="controls:messagecontrol"> <setter property="template" value="{staticresource messagecontroltemplate}" /> <style.triggers> <!-- here issue --> <trigger property="message.messagetype" value="{x:static classes:messagetype.error}"> <setter property="background" value="red" /> </trigger> </style.triggers> </style>

so problem can't add together trigger message.messagetype (or other sub property).

is possible accomplish this? or should create 2 properties in messagecontrol text , messagetype?

you datatrigger:

<style targettype="controls:messagecontrol"> ... <style.triggers> <datatrigger binding="{binding message.messagetype, relativesource={relativesource self}}" value="{x:static classes:messagetype.error}"> <setter property="background" value="red" /> </datatrigger> </style.triggers> </style>

you should raise propertychanged event after setting property's backing field:

public messagetype messagetype { { homecoming _messagetype; } set { _messagetype = value; raisepropertychanged(() => messagetype); } }

c# .net wpf xaml

Comments

Popular posts from this blog

java - How to set log4j.defaultInitOverride property to false in jboss server 6 -

c - GStreamer 1.0 1.4.5 RTSP Example Server sends 503 Service unavailable -

Using ajax with sonata admin list view pagination -