How can I make a > in a cell with Xamarin.Forms? -


i have application can change order , way cards appear. has ios need similar way settings > contacts > sort order page works.

this shows 2 rows. 1 first, last , other last, first. when user clicks on row acts radio button , tick mark appears @ end of row.

i try , implement functionality not sure start. should viewcell or textcell , how have ideas how implemented this

. 


in extension @hankide's answer:

you can create bindable property 'ischecked' while extending 'textcell' or 'viewcell' , bind vm state it.

public class mytextcell : textcell {     public static readonly bindableproperty ischeckedproperty =         bindableproperty.create(             "ischecked", typeof(bool), typeof(mytextcell),             defaultvalue: false);      public bool ischecked     {         { return (bool)getvalue(ischeckedproperty); }         set { setvalue(ischeckedproperty, value); }     } } 

next step create renderer listens property , shows check-mark @ ios level.

[assembly: exportrenderer(typeof(mytextcell), typeof(sampleapp.ios.myviewcellrenderer))] namespace sampleapp.ios {     //if implementing renderer viewcell, use viewcellrenderer bas class     public class myviewcellrenderer : textcellrenderer     {         uitableviewcell _nativecell;          public override uitableviewcell getcell(cell item, uitableviewcell reusablecell, uitableview tv)         {             _nativecell = base.getcell(item, reusablecell, tv);             var formscell = item mytextcell;              if (formscell != null)             {                 formscell.propertychanged -= onpropertychanged;                 formscell.propertychanged += onpropertychanged;             }             setcheckmark(formscell);              return _nativecell;         }          void onpropertychanged(object sender, propertychangedeventargs e)         {             var formscell = sender mytextcell;             if (formscell == null)                 return;              if (e.propertyname == mytextcell.ischeckedproperty.propertyname)             {                 setcheckmark(formscell);             }         }          private void setcheckmark(mytextcell formscell)         {             if (formscell.ischecked)                 _nativecell.accessory = uitableviewcellaccessory.checkmark;             else                 _nativecell.accessory = uitableviewcellaccessory.none;         }     } } 

sample usage 1

and, sample usage like:

<tableview intent="settings">     <tablesection title="sort order">         <local:mytextcell text="first last" ischecked="false" />         <local:mytextcell text="last, first" ischecked="true" />     </tablesection> </tableview> 

sample usage 2

you can listen tapped event ensure ischecked property works expected.

for example, bind property viewmodel:

<tableview intent="settings">     <tablesection title="sort order">         <local:mytextcell tapped="handle_tapped" text="{binding [0].name}" ischecked="{binding [0].isselected}" />         <local:mytextcell tapped="handle_tapped" text="{binding [1].name}" ischecked="{binding [1].isselected}" />     </tablesection> </tableview> 

and handle tap event:

public settingviewmodel[] settings = new []{     new settingviewmodel { name = "first last", isselected = false },     new settingviewmodel { name = "last first", isselected = true }, };  void handle_tapped(object sender, system.eventargs e) {     var cell = sender textcell;     if (cell == null)         return;      var selected = cell.text;     foreach(var setting in settings)     {         if (setting.name == selected)             setting.isselected = true;         else             setting.isselected = false;     } } 

enter image description here


Comments

Popular posts from this blog

What is happening when Matlab is starting a "parallel pool"? -

angular - DownloadURL return null in below code -

php - Cannot override Laravel Spark authentication with own implementation -