enisn / Xamarin.Forms.InputKit

CheckBox, Radio Button, Labeled Slider, Dropdowns etc.
MIT License
588 stars 100 forks source link

SelectionView SelectedItems Binding doesn't work #164

Closed ScarlettCode closed 4 years ago

ScarlettCode commented 4 years ago

Describe the bug SelectedItems is always null. It's possible I'm doing this all wrong but from what I can tell the SelectedItems isn't binding to the view model. The Allergens bind perfectly and the checkboxes show up but selecting checkboxes doesn't populate the SelectedAllergens list. If I pre populate SelectedAllergens it also doesn't check the checkboxes.

XAML

<controls:SelectionView ColumnNumber="1" 
SelectionType="CheckBox" 
SelectedItems="{Binding SelectedAllergens}"
ItemsSource="{Binding Allergens}" 
ItemDisplayBinding="{Binding Name}" />

VIEW MODEL

private ObservableCollection<AllergenDto> _selectedAllergens;
    public ObservableCollection<AllergenDto> SelectedAllergens
    {
      get => _selectedAllergens;
      set => SetProperty(ref _selectedAllergens, value);
    }
private ObservableCollection<AllergenDto> _allergens;
public ObservableCollection<AllergenDto> Allergens
    {
      get => _allergens;
      set => SetProperty(ref _allergens, value);
    }

MODEL

  public class AllergenDto
  {
    public int Id { get; set; }
    public string Name { get; set; }
  }

Smartphone (please complete the following information):

enisn commented 4 years ago

@ScarlettCode SelectedItems bindings are improved with commit 550b749. You'll see result like below after v3.1.0 release:

   <controls:SelectionView ColumnNumber="1" 
                SelectionType="CheckBox" 
                SelectedItems="{Binding SelectedAllergens, Mode=TwoWay}"
                ItemsSource="{Binding Allergens}" 
                ItemDisplayBinding="{Binding Name}" />

            <ListView ItemsSource="{Binding SelectedAllergens}">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <TextCell Text="{Binding Name}" />
                    </DataTemplate>
                </ListView.ItemTemplate>                
            </ListView>

ezgif-7-a6bfab8b9e19