i'm new wpf , having trouble using databinding templates. i've searched hours , struggle find way make work.
i have listview populates sql server. inside list view, want rows change colors match appropriate statuses. want avoid assigning color lead class, need pull colors sql table , dynamically set them. code below works button click , work method, apparently isn't "wpf way". how can "correct" way?
note: each status , respective color different.
private void addleadbutton_click(object sender, routedeventargs e) { datatable sqlcolorlist = sqlloader.selectfromsqldatabase("select * statustable"); int = 0; foreach (lead test in leadlistview.items) { foreach (datarow color in sqlcolorlist.rows) { if (test.leadstatus == color["status"].tostring()) { listviewitem row = leadlistview.itemcontainergenerator.containerfromindex(i) listviewitem; row.background = (brush)new system.windows.media.brushconverter().convertfromstring(color["color"].tostring()); } } i++; } } <listview x:name="leadlistview" width="494" margin="10,127,0,34" horizontalalignment="left"> <listview.itemcontainerstyle> <style targettype="{x:type listviewitem}"> <setter property="foreground" value="black" /> <setter property="borderbrush" value="lightgray" /> <setter property="borderthickness" value="0,0,0,1" /> </style> </listview.itemcontainerstyle> <listview.view> <gridview> <gridviewcolumn header="first name" width="121" displaymemberbinding="{binding leadfirstname}"/> <gridviewcolumn header="last name" width="121" displaymemberbinding="{binding leadlastname}"/> <gridviewcolumn header="status" width="121" displaymemberbinding="{binding leadstatus}"/> <gridviewcolumn header="date" width="121" displaymemberbinding="{binding leaddate, stringformat='mm/dd/yyyy'}"/> </gridview> </listview.view> </listview>
you shouldn't doing in code. in xaml bind background property leadstatus property , specify value converter convert leadstatus brush.
Comments
Post a Comment