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
Post a Comment