Я создаю приложение 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, но я не совсем уверен, как это исправить.