here xaml :
<stackpanel grid.column="2" orientation="vertical" verticalalignment="center" horizontalalignment="left"> <textblock x:name="lbl1" text="1" margin="0,0,0,0" fontsize="15" foreground="white" horizontalalignment="left" fontfamily="arial" verticalalignment="bottom" /> <textblock x:name="lbl1text" text="{x:static local:globals.currentuser.fullname}" grid.column="0" margin="0" fontsize="16" foreground="white" horizontalalignment="left" fontfamily="arial" /> </stackpanel> as possible see i'm trying set logged in user being hold in static class in project.
on form load setting user globals.currentuser = loggedin();
and when try set user textblock because want display fullname who's logged in facing issue :
nested types not supported: globals.currentuser.fullname
this means can not access property fullname object currentuser? , how fix this, , why happening?
p.s know how in code behind :
lbl1.text = globals.currentuser.fullname; //and might work
but think "more right" approach bind textblock throught xaml
thanks guys cheers
that's because x:static syntax (quote documentation):
<object property="{x:static prefix:typename.staticmembername}" .../> where
typename: name of type defines desired static member.
staticmembername: name of desired static value member (a constant, static property, field, or enumeration value).
as see - can use type name , 1 member name. syntax global.currentuser.fullname not supported markup extension.
as workaround can use one-time binding this:
<textblock text="{binding source={x:static local:globals.currentuser}, path=fullname, mode=onetime}" /> if have more parts in path, globals.currentuser.person.fullname - still can use binding. since x:static supports 1 property - rest go in path:
<textblock text="{binding source={x:static local:globals.currentuser}, path=person.fullname, mode=onetime}" /> onetime binding not required practice , improves perfomance bit (though little of course). bindings used create relation between target , source (like update target when source changes , on). in case don't need that, need grab value source (static property) , assign target (text block text). onetime telling wpf binding , not bother trying find way listen source property changes (which not possible here anyway).
Comments
Post a Comment