using System.Collections.Generic; namespace RosettaUI { public class ListItemBinder : ChildBinder, T>, IListItemBinder { private static IBinder> CreateIListBinder(IBinder binder) { return (IBinder>)CastBinder.Create(binder, binder.ValueType, typeof(IList)); } public int Index { get; set; } public ListItemBinder(IBinder listBinder, int index) : base(CreateIListBinder(listBinder)) { Index = index; } protected override T GetFromParent(IList list) => (0 <= Index && Index < list.Count) ? list[Index] : default; protected override IList SetToParent(IList list, T value) { if ( Index < list.Count ) list[Index] = value; return list; } } }