【问题标题】:Checkbox in ListView (MVVM) | Xamarin formsListView (MVVM) 中的复选框 | Xamarin 形式
【发布时间】:2020-02-11 13:08:15
【问题描述】:

我正在 Xamarin 表单中创建 ToDo 应用程序。我在显示待办事项的列表视图中的复选框有问题。选中复选框后,我无法找到如何获取 ToDo...

XAML 中的复选框:

<CheckBox IsChecked="{Binding IsChecked, Mode=TwoWay}" Grid.Row="0" Grid.Column="1" HorizontalOptions="CenterAndExpand" VerticalOptions="CenterAndExpand" />

ViewModel 中勾选复选框时获取信息的方法:

    private bool isChecked;
    public bool IsChecked
    {
        get { return isChecked; }
        set
        {
            if (isChecked != value)
            {
                isChecked = value;
                if (PropertyChanged != null)
                {
                    PropertyChanged(this, new PropertyChangedEventArgs("IsSelected"));
                    App.Current.MainPage.DisplayAlert("Title", " item have been selected", "Cancel");

                }
            }
        }
    }

对于如何在 MVVM 中实施的每一个建议,我将不胜感激。

【问题讨论】:

  • 嗨 Martin,我认为您应该将此行放在列表视图中 IsEnabled="{Binding ElementName=NameofYourcheckbox, Path=IsChecked}"

标签: c# xamarin mvvm xamarin.forms


【解决方案1】:

MVVM 方法:

如果您的复选框在列表中,那么它的binding property 将在您的Model 中,而不在ViewModel 中。 要获取所有检查值,您可以使用LinQWhereclause 根据 bool IsCheckedtrue 的条件从列表中获取数据

Where 子句的示例可以是:

var CheckedItemList= yourList.Where(m => m.IsChecked== true).ToList();

请参阅以下链接以了解有关how list bindings work in MVVM的更多信息

【讨论】:

  • 非常感谢,它工作正常。我没有意识到这是 ToDo 的一个属性,所以这就是我将 IsChecked 放入 ViewModel 的原因。
  • 请你告诉把这行代码放在哪里:var CheckedItemList= yourList.Where(m =&gt; m.IsChecked== true).ToList();
  • 好的,那么你想什么时候得到它,比如你可以在那里有一些按钮,点击后你可以得到所有选定的项目,或者其他任何地方?
  • 我想做到这一点,当复选框被选中时,待办事项将从列表中删除。有可能做到这样吗?
  • 我想你需要分享那个截图,以便更好地理解编辑你的问题,或者提出一个新问题。
猜你喜欢
  • 1970-01-01
  • 2018-03-10
  • 2019-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-30
  • 2014-12-16
  • 2020-08-04
相关资源
最近更新 更多