-
Notifications
You must be signed in to change notification settings - Fork 3
Pickers
A Picker
is a component where you can select something. We have several different Pickers in our library, which are found below.
An item picker should be used by you to let people pick an item from a list of items. The item picker is an in-line button with a title that people tap to start picking from the items. When an item is picked, the item will be displayed as a part of the in-line button.
In the following example, the item picker is populated by a list of Person
named People
, where Person
have a a property DisplayName
to be used for people to see when picking the item from the item picker.
<dui:ItemPicker Title="Person"
Mode="BottomSheet"
ItemsSource="{Binding People}"
SelectedItem="{Binding PickedPerson}"
ItemDisplayProperty="DisplayName"/>
You should select a proper Mode
for the item picker depending on the size of each item and the length of the items to pick from. ContextMenu
mode is preferred if the number of items are short and the length of each item to display is short, otherwise BottomSheet
is preferred.
You can customise how the item for people to pick look. This can only be done when the item picker is presented as a bottom sheet.
<dui:ItemPicker Mode="BottomSheet"
SelectedItem="{Binding SelectedPerson}"
ItemsSource="{Binding People}"
ItemDisplayProperty="DisplayName">
<dui:ItemPicker.BottomSheetConfiguration>
<dui:BottomSheetConfiguration>
<dui:BottomSheetConfiguration.SelectableItemTemplate>
<ControlTemplate>
<dui:Label Text="{TemplateBinding Item.FirstName}"
BackgroundColor="{TemplateBinding IsSelected, Converter={dui:BoolToObjectConverter
TrueObject={dui:Colors color_success_light},
FalseObject={dui:Colors color_error_light}}}" />
</ControlTemplate>
</dui:BottomSheetConfiguration.SelectableItemTemplate>
</dui:BottomSheetConfiguration>
</dui:ItemPicker.BottomSheetConfiguration>
</dui:ItemPicker>
This is achieved by using ControlTemplate
and TemplateBinding
. Template bindings let you bind to the library properties. The properties you can bind to is:
-
Item
- Your object in the list of items to pick from. The items is the ones you set inItemPicker.ItemsSource
. -
IsSelected
- A boolean property that determines if people have selected your object or not. Use this to customise your view so people know that the item is selected or not.
Inspect the components properties class to further customise and use it.
A multi items picker should be used by you to let people pick an multiple items from a list of items. The item picker is an in-line button with a placeholder that people tap to start picking from the items. When an item is picked, the items will be displayed as a horizontal list of items. When the max size of the parents width is reached, the items will be merged together to a single number of items.
NB! The
SelectedItems
property must be bound to aList<object>
. Otherwise only the changes will only occur from ViewModel -> ChipGroup. And not both ways.
In this example, people can select people to send a message to. When people pick items the SelectedItemsCommand
property will be executed with the list of items. You can also use the SelectedItems
property to pre-set or get updates when people select items.
<dui:MultiItemsPicker Placeholder="{x:Static localizedStrings:LocalizedStrings.To}"
ItemsSource="{x:Static sampleData:SampleDataStorage.People}"
SelectedItemsCommand="{Binding YourCommand}">
</dui:MultiItemsPicker>
This can be done the exact same way as with ItemPicker.
Inspect the components properties class to further customise and use it.
There are three types of date/time pickers:
- Android: Material Design 2 - Date Pickers & Material Design 2 - Time Pickers
- iOS: Pickers - Human Interface Guidelines
A date picker should be used by you to let people pick a date. The date picker is an in-line button with a title that people tap to start picking the date. When a date is picked, the date will be displayed as a part of the in-line button.
<dui:DatePicker SelectedDate="{Binding SelectedBirthday}"/>
Inspect the components properties class to further customise and use it.
If you need to display a horizontal line that people can swipe to select dates, you can use the HorizontalInlineDatePicker
. People can tap the selected date to get a native DatePicker
to select the date from.
<dui:HorizontaInlineDatePicker SelectedDate="{Binding SelectedBirthday}"/>
Inspect the components properties class to further customise and use it.
A TimePicker
should be used by you to let people pick a time. The TimePicker
is an in-line button with a title that people tap to start picking the time. When a time is picked, the time will be displayed as part of the in-line button.
<dui:DateAndTimePicker SelectedTime="{Binding SelectedGroceryShopping}" />
Inspect the components properties class to further customize and use it.
A DateAndTimePicker
should be used by you to let people pick both a date -and time. The DateAndTimePicker
is two in-line buttons with a title that people tap to start picking the date or time. When date is picked, the date or time will be displayed as part of the in-line button.
<dui:DateAndTimePicker SelectedDateTime="{Binding SelectedDeadline}"/>
Inspect the components properties class to further customize and use it.
SegmentedControl lets people pick a single or multiple item(s) from a in line horizontal scrollable list of item. When people select an item the item will be marked as checked.
<dui:SegmentedControl ItemsSource="{Binding People}" SelectedItem="{Binding PickedPerson}" ItemDisplayProperty="DisplayName" SelectionMode="Single" />
There is different ways of detecting when people select an item from the segmented control.
- Events,
DidSelectItem
/DidDeSelectItem
- Commands,
SelectedItemCommand
/DeSelectedItemCommand
- Properties,
SelectedItem
(SelectionMode=Single
) /SelectedItems
(SelectionMode=Multi
)
Inspect the components properties class to further customize and use it.