C# 如何在MVVM中隐藏复选框的代码?
我有一个复选框的代码。请告诉我如何在MVVM中编写它? 有一个函数,我只能选择一个复选框。一般来说,我知道我必须编写命令 XAML: 视图模型C# 如何在MVVM中隐藏复选框的代码?,c#,xaml,xamarin,xamarin.forms,xamarin.android,C#,Xaml,Xamarin,Xamarin.forms,Xamarin.android,我有一个复选框的代码。请告诉我如何在MVVM中编写它? 有一个函数,我只能选择一个复选框。一般来说,我知道我必须编写命令 XAML: 视图模型 public class MainPageViewModel { public List<Model> Items { set; get; } public MainPageViewModel() { Lis
public class MainPageViewModel
{
public List<Model> Items { set; get; }
public MainPageViewModel()
{
List<Model> list = new List<Model>();
for (int i=0; i<10; i++)
{
list.Add(new Model { IsSelected = false });
}
Items = list;
}
}
对于要命令的事件,请使用Corcav.Behavior nuget
。。。
xmlns:corcav=“clr命名空间:corcav.Behaviors;assembly=corcav.Behaviors”
...
在ViewModel中添加此命令并编写逻辑
public ICommand CheckBoxChangedCommand{ get; set; }
...
CheckBoxChangedCommand= new Command<object>(CheckBoxChanged);
...
private void CheckBoxChanged(object obj)
{
//set all list/collection element to false with linq
if(obj is Model model)
{
model.IsSelected = true;
}
}
public ICommand CheckBoxChangedCommand{get;set;}
...
CheckBoxChangedCommand=新命令(CheckBoxChanged);
...
私有无效复选框已更改(对象obj)
{
//使用linq将所有列表/集合元素设置为false
if(obj为模型)
{
model.IsSelected=true;
}
}
对于要命令的事件,请使用Corcav.Behavior nuget
。。。
xmlns:corcav=“clr命名空间:corcav.Behaviors;assembly=corcav.Behaviors”
...
在ViewModel中添加此命令并编写逻辑
public ICommand CheckBoxChangedCommand{ get; set; }
...
CheckBoxChangedCommand= new Command<object>(CheckBoxChanged);
...
private void CheckBoxChanged(object obj)
{
//set all list/collection element to false with linq
if(obj is Model model)
{
model.IsSelected = true;
}
}
public ICommand CheckBoxChangedCommand{get;set;}
...
CheckBoxChangedCommand=新命令(CheckBoxChanged);
...
私有无效复选框已更改(对象obj)
{
//使用linq将所有列表/集合元素设置为false
if(obj为模型)
{
model.IsSelected=true;
}
}
目前,复选框不支持命令。此问题已在Github上报告,尚未修复。我们可以跟踪此增强
您可以使用InputKit
。在NuGet上安装Xamarin.Forms.InputKit
。
它提供了CheckChangedCommand
CheckChangedCommand:(命令)可绑定命令,在check更改时执行
<input:CheckBox HorizontalOptions="Start" Color="Black" CheckChangedCommand="{Binding CheckBoxChangedCommand}">
目前,复选框不支持命令。此问题已在Github上报告,尚未修复。我们可以跟踪此增强 您可以使用
InputKit
。在NuGet上安装Xamarin.Forms.InputKit
。
它提供了CheckChangedCommand
CheckChangedCommand:(命令)可绑定命令,在check更改时执行
<input:CheckBox HorizontalOptions="Start" Color="Black" CheckChangedCommand="{Binding CheckBoxChangedCommand}">
这可能就是您要找的。请看一下如何使用。它以可重用的方式将CheckedChanged事件等事件转换为可从viewmodel连接到的命令。您应该将类型为Model
的SelectedItem
属性添加到MainPageViewModel
并绑定到ListView。在VM中更改此属性时选择EdItem
(在setter中)您应该取消设置以前设置的IsSelected
(在setter中,这将是您为VM fxSelectedItem
存储SelectedItem
)的私有字段,并设置当前(value.IsSelected
)和设置值(SelectedItem=value
),然后提前调用PropChange。。。就是这样,这可能就是你想要的。看看如何使用。它以可重用的方式将CheckedChanged事件等事件转换为可从viewmodel连接到的命令。您应该将类型为Model
的SelectedItem
属性添加到MainPageViewModel
并绑定到ListView。在VM中更改此属性时选择EdItem
(在setter中)您应该取消设置以前设置的IsSelected
(在setter中,这将是您为VM fxSelectedItem
存储SelectedItem
)的私有字段,并设置当前(value.IsSelected
)和设置值(SelectedItem=value
),然后提前调用PropChange。。。这是itI的错误XLS0413在类型“EventToCommand”上找不到属性“Commandparameter”。如果我写的时候没有Commandparameter,那么我有一个错误,那就是没有可用的命令。你可以制作一个我可以查看的git repo示例吗。如果我写的时候没有Commandparameter,那么我就有一个错误,就是没有可用的Commandparameter。你能做一个我可以查看的git repo示例吗
public ICommand CheckBoxChangedCommand{ get; set; }
...
CheckBoxChangedCommand= new Command<object>(CheckBoxChanged);
...
private void CheckBoxChanged(object obj)
{
//set all list/collection element to false with linq
if(obj is Model model)
{
model.IsSelected = true;
}
}
<input:CheckBox HorizontalOptions="Start" Color="Black" CheckChangedCommand="{Binding CheckBoxChangedCommand}">