Jump to: navigation, search

Changes


Multi Select (UBIK Client)

1,413 bytes added, 15:25, 13 January 2023
/* Multi select for filtered lists */
Here's also an example of multi select related XAML code adapted for a filtered list.
'''UNDER CONSTRUCTION'''
<tabs>
<tab name="UWP">
<source lang = "xml">
<Grid
xmlns:cv="using:UBIK.WinX.UI.CollectionView"
xmlns:controls="using:UBIK.WinX.Controls"
Visibility="{Binding BulkOperation.ItemSelectionMode, Source={StaticResource FilteredList}, Converter={StaticResource EqualToVisConverter}, ConverterParameter=None}" />
</Grid>
</source>
The critical part is that wherever the <code>BulkOperation</code> property is accessed, it must be accessed from the <code>FilteredList</code>, not the original unfiltered <code>Children.Items</code> collection.
</tab>
<tab name="Xamarin">
<source lang = "xml">
<StackLayout Grid xmlns:ctrlscontrols="clr-namespace:UBIK.CPL.Controls;assembly=UBIK.CPL" xmlns:behaviors="clr-namespace:UBIK.CPL.Behaviors;assembly=UBIK.CPL"> <ctrls:EvalExpressionContentView.Resources> <ResourceDictionary> <x:NameString x:Key="EvaluatorExpresssion">Item.Header.ToLower().Contains(&quot;1&quot;)==false</x:String> <controls:SfDataSourceExt x:Key="FilteredList" Expression="{StaticResource Expresssion}" ItemsSource="{Binding Children.Items}" Unloaded="{Binding SkipFiltering}" /> </ResourceDictionary> </ContentView.Resources>  ... <!-- Filtered List --> <controls:SfListViewExt ... ContextItemsSource="{BindingDisplayItems, Source={StaticResource FilteredList}}" ExpressionSelectionGesture="ContextTap" SelectionMode="{Binding BulkOperation.Values[&quot;LK_EXAMPLE&quot;]!ItemSelectionMode, Source=null || Context{StaticResource FilteredList}, Converter={StaticResource SelectionModeConverter}}"> <controls:SfListViewExt.Values[&quot;GUIDREF&quot;]!Behaviors> <behaviors:EventHandlerBehavior EventName=null"SelectionChanged"> <behaviors:InvokeCommandAction Command="{Binding BulkOperation.ItemSelectionChangedCommand, Source={StaticResource FilteredList}}" Converter="{StaticResource SelectionChangedEventArgsConverter}" /> <Label/behaviors:EventHandlerBehavior> TextColor ... <behaviors:EventHandlerBehavior EventName="#00000ItemHolding"> IsVisible <behaviors:InvokeCommandAction Command="{Binding Path=ResultBulkOperation.ToggleMultiSelectCommand, Source={xStaticResource FilteredList}}" /> </behaviors:Reference EvaluatorEventHandlerBehavior> </controls:SfListViewExt.Behaviors> </controls:SfListViewExt>  ... <!-- Multi Select Panel --> <ContentView ... BindingContext="{StaticResource FilteredList}" ControlTemplate="{StaticResource UBIKMultiSelectTemplate}" IsVisible="{Binding BulkOperation.ItemSelectionMode, Converter={StaticResource BoolToBoolEqualityToBool}, ConverterParameter=Multiple, FallbackValue=false, TargetNullValue=false}" /> </StackLayoutGrid>
</source>
The Label should be visible as long as at least one of the context object's two named properties has a value.
</tab>
</tabs>
'''UNDER CONSTRUCTION'''{{Hint|The critical part is that wherever the <code>BulkOperation</code> property is accessed, it must be accessed from the <code>FilteredList</code>, not the original unfiltered <code>Children.Items</code> collection.}}
[[Category:Client|Multi Select (UBIK Client)]]