如何将SharePoint多选字段绑定到WPF MVVM

时间:2019-06-05 12:29:04

标签: c# wpf sharepoint data-binding

我正在构建WPF MVVM应用程序以与SharePoint列表数据进行交互。到目前为止,一切正常,但我反对尝试处理多选字段。 Sharepoint以字符串数组形式提供数据,我需要将其转换为复选框。

我一直在尝试转换功能,但效果不佳,但是ConvertBack函数根本无法正常工作。我将字段绑定到三个复选框,并为每个复选框设置了一个转换参数以区分它们。我不确定的是如何从三个复选框返回一个string []。

以下是字段的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函数引起的,但是我不确定如何解决它。

0 个答案:

没有答案