首页 > 解决方案 > 按索引将开关值绑定到列表元素

问题描述

我有多个开关(星期几),我想将它绑定到列表特定索引的 .. 像星期六 => mylist[0] ,星期日 mylist[1] 现在当我尝试获取它的值时它返回 null !

我的视图模型

  private List<bool> _days;

  public List<bool> Days
    {
        get => _days;
        set
        {
            if (Equals(value, _days)) return;
            _days = value;
            OnPropertyChanged();
        }
    }

我的观点

<Switch IsToggled="{Binding Days[0]}" Grid.Row="4" Grid.Column="0"
                Scale="1.5" x:Name="SaturdaySwitch"></Switch>
 <Switch IsToggled="{Binding Days[1]}" Grid.Row="5" Grid.Column="0"
                Scale="1.5" x:Name="SundaySwitch"></Switch>

标签: xamlxamarindata-bindingxamarin.formsbinding

解决方案


为了向您展示如何使用代码,我为您创建了这个快速而简单的示例,可以在此处找到:https ://github.com/jfversluis/FixedArraySample

在 ViewModel(这里命名为 PageModel)中,我定义了一个用 7 个值初始化的 List。

public List<bool> Days { get; set; } = new List<bool>
{
    false,
    false,
    true,
    false,
    false,
    false,
    true
};

然后在页面中,我像这样绑定它:

<StackLayout Orientation="Horizontal">
    <Label Text="Monday" />
    <Switch IsToggled="{Binding Days[0]}" />
</StackLayout>

这将导致下面的屏幕。 数据绑定开关控件

要在切换开关时也将值设置回列表中,您可能需要添加双向数据绑定,例如:<Switch IsToggled="{Binding Days[0], Mode=TwoWay}" />.

现在列表中的值将Days相应更新,您可以在 ViewModel 中访问它们。


推荐阅读