i've got known error
system.windows.data error: 2 : cannot find governing frameworkelement or frameworkcontentelement target element.bindingexpression:path=percent; dataitem=null; target element 'gradientstop' (hashcode=81530); target property 'offset' (type 'double')
on part of code :
<datagrid.rowstyle> <style targettype="datagridrow"> <style.triggers> <datatrigger binding="{binding state}" value="started"> <setter property="background"> <setter.value> <lineargradientbrush endpoint="1,0" startpoint="0,0"> <gradientstop color="green" offset="0" /> <gradientstop color="#ff2d2d30" offset="{binding percent}" /> </lineargradientbrush> </setter.value> </setter> </datatrigger> <trigger property="validation.haserror" value="true"> <setter property="borderthickness" value="1"/> <setter property="borderbrush" value="red"/> </trigger> </style.triggers> </style> </datagrid.rowstyle>
i've tried set datacontext
proxy did not work :
<datagrid.resources> <app:bindingproxy x:key="proxy" data="{binding}" /> </datagrid.resources> [...] <gradientstop color="#ff2d2d30" offset="{binding data.percent, source={staticresource proxyrow}}" />
system.windows.data error: 40 : bindingexpression path error: 'percent' property not found on 'object' ''viewmodel' (hashcode=37637549)'. bindingexpression:path=data.percent; dataitem='bindingproxy' (hashcode=3342738); target element 'gradientstop' (hashcode=64874797); target property 'offset' (type 'double')
which obvious data contains datacontext of control viewmodel.
any suggestion ? !
as suggested in other posts, thought not apply issue, using converter suits ! here references:
binding gradientstop works reports error
how bind gradientstop colours or gradientstops property in silverlight?
public object convert(object value, type targettype, object parameter, system.globalization.cultureinfo culture) { model.listparameters parameters = (model.listparameters)value; if(parameters !=null) { var start = new gradientstop(); start.color = colors.green; start.offset = 0; var stop = new gradientstop(); stop.color = (color)colorconverter.convertfromstring("#ff2d2d30"); stop.offset = parameters .percent; var result = new lineargradientbrush(); result.startpoint = new point(0, 0); result.endpoint = new point(1, 0); result.gradientstops.add(start); result.gradientstops.add(stop); return result; } return null; }
and xaml
<usercontrol.resources> <app:gradientprogressconverter x:key="gradientprogressconverter" /> </usercontrol.resources> <datagrid> <datagrid.rowstyle> <style targettype="datagridrow"> <style.triggers> <datatrigger binding="{binding state}" value="started"> <setter property="background" value="{binding converter={staticresource gradientprogressconverter}}" /> </datatrigger> </style.triggers> </style> </datagrid.rowstyle> </<datagrid>
Comments
Post a Comment