c# - Assign Row Colors Dynamically to ListView WPF from SQL Database -


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