示例#1
0
        public async Task <List <T> > ShowMultiSelectDialogAsync <T>(
            List <T> sourceItems,
            string displayMemberPath,
            Func <T, string, bool> filter,
            string dialogTitle,
            string dialogPrimaryButtonText
            )
        {
            var advancedSelectDialog = new AdvancedSelectDialog()
            {
                XamlRoot = _currentActiveWindowUIContextService.XamlRoot,
            };

            advancedSelectDialog.Title               = dialogTitle;
            advancedSelectDialog.PrimaryButtonText   = dialogPrimaryButtonText;
            advancedSelectDialog.SecondaryButtonText = "Cancel".Translate();
            advancedSelectDialog.SetSourceItems(sourceItems, filter != null ? (x, s) => filter((T)x, s) : default(Func <object, string, bool>));
            advancedSelectDialog.ItemDisplayMemberPath = displayMemberPath;
            advancedSelectDialog.IsMultiSelection      = true;
            var result = await advancedSelectDialog.ShowAsync();

            if (result == Windows.UI.Xaml.Controls.ContentDialogResult.Primary)
            {
                return(advancedSelectDialog.GetResultItems().Cast <T>().ToList());
            }
            else
            {
                return(new List <T>());
            }
        }
示例#2
0
        public async Task <T> ShowSingleSelectDialogAsync <T>(
            List <T> sourceItems,
            string displayMemberPath,
            Func <T, string, bool> filter,
            string dialogTitle,
            string dialogPrimaryButtonText,
            string dialogSecondaryButtonText       = null,
            Func <Task <T> > SecondaryButtonAction = null
            )
        {
            var advancedSelectDialog = new AdvancedSelectDialog()
            {
                XamlRoot = _currentActiveWindowUIContextService.XamlRoot,
            };

            advancedSelectDialog.Title             = dialogTitle;
            advancedSelectDialog.PrimaryButtonText = dialogPrimaryButtonText;
            advancedSelectDialog.CloseButtonText   = "Cancel".Translate();
            advancedSelectDialog.SetSourceItems(sourceItems, filter != null ? (x, s) => filter((T)x, s) : default(Func <object, string, bool>));
            advancedSelectDialog.ItemDisplayMemberPath = displayMemberPath;
            advancedSelectDialog.IsMultiSelection      = false;
            if (dialogSecondaryButtonText != null)
            {
                advancedSelectDialog.SecondaryButtonText = dialogSecondaryButtonText;
            }

            var result = await advancedSelectDialog.ShowAsync();

            if (result == Windows.UI.Xaml.Controls.ContentDialogResult.Primary)
            {
                return((T)advancedSelectDialog.GetResultItems().FirstOrDefault());
            }
            else if (result == Windows.UI.Xaml.Controls.ContentDialogResult.Secondary)
            {
                return(await SecondaryButtonAction?.Invoke());
            }
            else
            {
                return(default(T));
            }
        }