Как связать поле с множественным выбором SharePoint с WPF MVVM - PullRequest
0 голосов
/ 05 июня 2019

Я создаю приложение WPF MVVM для взаимодействия с данными списка SharePoint.Пока все идет хорошо, но я столкнулся с попыткой разобраться с полями с множественным выбором.Sharepoint предоставляет данные в виде массива строк, и мне нужно преобразовать их в флажки.

Я играл с функцией преобразования с умеренным успехом, но функция ConvertBack не работает вообще.У меня есть поле, привязанное к трем флажкам, и я установил параметр преобразования для каждого из них, чтобы дифференцировать их.В чем я очень не уверен, так это как вернуть обратно строку [] из трех флажков.

Вот XAML для полей:

     <StackPanel Orientation="Horizontal">
                        <Label>Correspondence</Label>
                        <CheckBox Name="chkP1Correspond" IsChecked="{Binding Path=Student.Parent_x0020_1_x0020_Mailing_x00, Converter={StaticResource mailingOptsBoolConverter}, ConverterParameter=Correspondence}" Margin="5,6,0,0"/>
                        <Label>Scheduling</Label>
                        <CheckBox Name="chkP1Sched" IsChecked="{Binding Path=Student.Parent_x0020_1_x0020_Mailing_x00, Converter={StaticResource mailingOptsBoolConverter}, ConverterParameter=Scheduling}" Margin="5,6,0,0"/>
                        <Label> Billing</Label>
                        <CheckBox Name="chkP1Bill" IsChecked="{Binding Path=Student.Parent_x0020_1_x0020_Mailing_x00, Converter={StaticResource mailingOptsBoolConverter}, ConverterParameter=Billing}" Margin="5,6,0,0"/>
                    </StackPanel>

Вот моя функция преобразования:

public class mailingOptsBoolConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            string[] arrayValue = value as string[];
            string strParam = parameter as string;
            if (arrayValue is null)
            { return false; }
            else
            {

                if (Array.IndexOf(arrayValue, strParam) > -1)
                { return true; }
                else { return false; }
            }
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value is bool)
            {
                if ((bool)value == true)
                {
                    return (string)parameter;
                }
                else
                {
                    return null;
                }
            }
            return null;
        }
    }

Неудивительно, что это не работает.Кажется, что функция Convert работает нормально и правильно отображает флажки.Однако, если я сниму один из флажков, все они будут сняты.Кроме того, если я пытаюсь сохранить данные обратно в Sharepoint, ничего не обновляется.Я почти уверен, что это связано с функцией ConvertBack, но я не совсем уверен, как это исправить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...