如何解决选中列表中每个项目的所有复选框,并使用xamarin形式和syncfusion直观地更新xaml
我对项目有一个非常复杂的集合视图,我希望可以选择全部或通过从绑定列表中跳过项目进行选择。视觉上,第一个全选选项不在列表中。如何从列表中选择每个项目并获取其属性(例如,项目ID)?
XAML
<StackLayout x:Name="editview" Grid.Row="3" IsVisible="false">
<CollectionView ItemsSource="{Binding ListData}">
<CollectionView.ItemTemplate>
<DataTemplate>
<Grid Padding="10">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Label Grid.Column="1"
Text="{Binding subject}"
FontAttributes="Bold" />
<Label Grid.Row="1"
Grid.Column="1"
Text="{Binding body}"
FontAttributes="Italic"
VerticalOptions="End" />
<syncfusion:SfCheckBox x:Name="_checkbox" IsThreeState="True" StateChanged="CheckBox_StateChanged" CornerRadius="5.0"/>
</Grid>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
</StackLayout>
C#
void SelectAll_StateChanged(System.Object sender,Syncfusion.XForms.Buttons.StateChangedEventArgs e)
{
if (!skip)
{
skip = true;
New_ListData = vm.ListData;
foreach (var item in New_ListData)
{
NOTE: I DONT HAVE ACCESS TO _checkbox INSIDE THIS. I DONT KNOW WHY?
_checkbox.IsChecked = e.IsChecked;
}
///将所有复选框更新为真时,收集视图
skip = false;
}
}
解决方法
由于使用了DataTemplate内部的复选框,因此无法直接在后面的代码中获取它。通过使用复选框IsChecked属性执行绑定,可以实现您的要求。
我们已经准备了一个类似此要求的示例,它将从下面的链接下载。
示例:https://www.syncfusion.com/downloads/support/directtrac/general/ze/Checklist-866762270.zip
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。