• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# CheckboxGroup
2<!--Kit: ArkUI-->
3<!--Subsystem: ArkUI-->
4<!--Owner: @houguobiao-->
5<!--Designer: @houguobiao-->
6<!--Tester: @lxl007-->
7<!--Adviser: @HelloCrease-->
8
9多选框群组,用于控制多选框全选或者不全选状态。
10
11>  **说明:**
12>
13>  该组件从API version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
14
15## 子组件
16
1718
19## 接口
20
21CheckboxGroup(options?: CheckboxGroupOptions)
22
23创建多选框群组,用于控制群组内Checkbox的全选或取消全选状态,具有相同group值的Checkbox和CheckboxGroup属于同一群组。
24
25在结合带缓存组件使用时(如List),未被创建的Checkbox选中状态需要应用手动控制。详细示例请参考[示例3](#示例3设置全选)。
26
27**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
28
29**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
30
31**系统能力:** SystemCapability.ArkUI.ArkUI.Full
32
33**参数:**
34
35| 参数名  | 类型                                                  | 必填 | 说明                 |
36| ------- | ----------------------------------------------------- | ---- | -------------------- |
37| options | [CheckboxGroupOptions](#checkboxgroupoptions对象说明) | 否   | 配置多选框群组参数。 |
38
39## CheckboxGroupOptions对象说明
40
41多选框群组的信息。
42
43**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
44
45**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
46
47**系统能力:** SystemCapability.ArkUI.ArkUI.Full
48
49| 名称 | 类型 | 只读 | 可选 | 说明 |
50| -------- | -------- | -------- | -------- | -------- |
51| group | string | 否 | 是 | 群组名称。<br/>**说明:** <br/>具有相同群组名称的多个CheckboxGroup,仅第一个CheckboxGroup生效。 |
52
53## 属性
54
55除支持[通用属性](ts-component-general-attributes.md)外,还支持以下属性:
56
57### selectAll
58
59selectAll(value: boolean)
60
61设置是否全选。若同组的[Checkbox](ts-basic-components-checkbox.md)显式设置了select属性,则Checkbox的优先级高。
62
63在与带有缓存功能的组件(如[List](ts-container-list.md))配合使用时,未创建的Checkbox选中状态需由开发者控制。
64
65从API version 10开始,该属性支持[$$](../../../ui/state-management/arkts-two-way-sync.md)双向绑定变量。
66从API version 18开始,该属性支持[!!](../../../ui/state-management/arkts-new-binding.md#系统组件参数双向绑定)双向绑定变量。
67
68**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
69
70**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
71
72**系统能力:** SystemCapability.ArkUI.ArkUI.Full
73
74**参数:**
75
76| 参数名 | 类型    | 必填 | 说明                                                         |
77| ------ | ------- | ---- | ------------------------------------------------------------ |
78| value  | boolean | 是   | 是否全选。<br/>默认值:false<br/>值为true时,多选框群组将全部被选中;值为false时,多选框群组将全部取消选中。 |
79
80### selectAll<sup>18+</sup>
81
82selectAll(isAllSelected: Optional\<boolean>)
83
84设置是否全选。若同组的[Checkbox](ts-basic-components-checkbox.md)显式设置了select属性,则Checkbox的优先级高。与[selectAll](#selectall)相比,isAllSelected参数新增了对undefined类型的支持。
85
86在与带有缓存功能的组件(如[List](ts-container-list.md))配合使用时,未创建的Checkbox选中状态需由开发者控制。
87
88该属性支持[$$](../../../ui/state-management/arkts-two-way-sync.md)、[!!](../../../ui/state-management/arkts-new-binding.md#系统组件参数双向绑定)双向绑定变量。
89
90**卡片能力:** 从API version 18开始,该接口支持在ArkTS卡片中使用。
91
92**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
93
94**系统能力:** SystemCapability.ArkUI.ArkUI.Full
95
96**参数:**
97
98| 参数名        | 类型                                                         | 必填 | 说明                                                         |
99| ------------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
100| isAllSelected | [Optional](ts-universal-attributes-custom-property.md#optionalt12)\<boolean> | 是   | 是否全选。<br/>当isAllSelected的值为undefined时取默认值false。<br/>值为true时,多选框群组将全部被选中;值为false时,多选框群组将全部取消选中。 |
101
102### selectedColor
103
104selectedColor(value: ResourceColor)
105
106设置被选中或部分选中状态的颜色。
107
108**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
109
110**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
111
112**系统能力:** SystemCapability.ArkUI.ArkUI.Full
113
114**参数:**
115
116| 参数名 | 类型                                       | 必填 | 说明                                                         |
117| ------ | ------------------------------------------ | ---- | ------------------------------------------------------------ |
118| value  | [ResourceColor](ts-types.md#resourcecolor) | 是   | 被选中或部分选中状态的颜色。<br/>默认值:$r('sys.color.ohos_id_color_text_primary_activated')<br/>异常值按照默认值处理。 |
119
120### selectedColor<sup>18+</sup>
121
122selectedColor(resColor: Optional\<ResourceColor>)
123
124设置被选中或部分选中状态的颜色。与[selectedColor](#selectedcolor)相比,resColor参数新增了对undefined类型的支持。
125
126**卡片能力:** 从API version 18开始,该接口支持在ArkTS卡片中使用。
127
128**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
129
130**系统能力:** SystemCapability.ArkUI.ArkUI.Full
131
132**参数:**
133
134| 参数名   | 类型                                                         | 必填 | 说明                                                         |
135| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
136| resColor | [Optional](ts-universal-attributes-custom-property.md#optionalt12)\<[ResourceColor](ts-types.md#resourcecolor)> | 是   | 被选中或部分选中状态的颜色。<br/>当resColor的值为undefined时,默认值:$r('sys.color.ohos_id_color_text_primary_activated')<br/>异常值按照默认值处理。 |
137
138### unselectedColor<sup>10+</sup>
139
140unselectedColor(value: ResourceColor)
141
142设置非选中状态边框颜色。
143
144**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
145
146**系统能力:** SystemCapability.ArkUI.ArkUI.Full
147
148**参数:**
149
150| 参数名 | 类型                                       | 必填 | 说明                                                         |
151| ------ | ------------------------------------------ | ---- | ------------------------------------------------------------ |
152| value  | [ResourceColor](ts-types.md#resourcecolor) | 是   | 非选中状态边框颜色。<br/>默认值:$r('sys.color.ohos_id_color_switch_outline_off')。 |
153
154### unselectedColor<sup>18+</sup>
155
156unselectedColor(resColor: Optional\<ResourceColor>)
157
158设置非选中状态边框颜色。与[unselectedColor](#unselectedcolor10)<sup>10+</sup>相比,resColor参数新增了对undefined类型的支持。
159
160**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
161
162**系统能力:** SystemCapability.ArkUI.ArkUI.Full
163
164**参数:**
165
166| 参数名   | 类型                                                         | 必填 | 说明                                                         |
167| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
168| resColor | [Optional](ts-universal-attributes-custom-property.md#optionalt12)\<[ResourceColor](ts-types.md#resourcecolor)> | 是   | 非选中状态边框颜色。<br/>当resColor的值为undefined时,默认值:$r('sys.color.ohos_id_color_switch_outline_off')。 |
169
170### mark<sup>10+</sup>
171
172mark(value: MarkStyle)
173
174设置多选框内部图标样式。
175
176**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
177
178**系统能力:** SystemCapability.ArkUI.ArkUI.Full
179
180**参数:**
181
182| 参数名 | 类型                                         | 必填 | 说明                 |
183| ------ | -------------------------------------------- | ---- | -------------------- |
184| value  | [MarkStyle](ts-types.md#markstyle10对象说明) | 是   | 多选框内部图标样式。 |
185
186### mark<sup>18+</sup>
187
188mark(style: Optional\<MarkStyle>)
189
190设置多选框内部图标样式。与[mark](#mark10)<sup>10+</sup>相比,style参数新增了对undefined类型的支持。
191
192**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
193
194**系统能力:** SystemCapability.ArkUI.ArkUI.Full
195
196**参数:**
197
198| 参数名 | 类型                                                         | 必填 | 说明                                                         |
199| ------ | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
200| style  | [Optional](ts-universal-attributes-custom-property.md#optionalt12)\<[MarkStyle](ts-types.md#markstyle10对象说明)> | 是   | 多选框内部图标样式。<br/>当style的值为undefined时,维持上次取值。 |
201
202### checkboxShape<sup>12+</sup>
203
204checkboxShape(value: CheckBoxShape)
205
206设置CheckboxGroup组件形状,包括圆形和圆角方形。
207
208**卡片能力:** 从API version 12开始,该接口支持在ArkTS卡片中使用。
209
210**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
211
212**系统能力:** SystemCapability.ArkUI.ArkUI.Full
213
214**参数:**
215
216| 参数名 | 类型                                                  | 必填 | 说明                                                         |
217| ------ | ----------------------------------------------------- | ---- | ------------------------------------------------------------ |
218| value  | [CheckBoxShape](ts-appendix-enums.md#checkboxshape11) | 是   | 设置CheckboxGroup组件形状,包括圆形和圆角方形。<br/>默认值:CheckBoxShape.CIRCLE <br />**说明:**<br/>CheckboxGroup组件将按照设置的形状显示。<br/>CheckboxGroup内所有未单独设置shape类型的Checkbox,其形状将与CheckboxGroup保持一致。<br/>CheckboxGroup内已单独设置shape类型的Checkbox,其形状将优先于CheckboxGroup的设置,按照自身设置显示。 |
219
220### checkboxShape<sup>18+</sup>
221
222checkboxShape(shape: Optional\<CheckBoxShape>)
223
224设置CheckboxGroup组件形状,包括圆形和圆角方形。与[checkboxShape](#checkboxshape12)<sup>12+</sup>相比,shape参数新增了对undefined类型的支持。
225
226**卡片能力:** 从API version 18开始,该接口支持在ArkTS卡片中使用。
227
228**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
229
230**系统能力:** SystemCapability.ArkUI.ArkUI.Full
231
232**参数:**
233
234| 参数名 | 类型                                                         | 必填 | 说明                                                         |
235| ------ | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
236| shape  | [Optional](ts-universal-attributes-custom-property.md#optionalt12)\<[CheckBoxShape](ts-appendix-enums.md#checkboxshape11)> | 是   | 设置CheckboxGroup组件形状,包括圆形和圆角方形。<br/>当shape的值为undefined时,默认值为CheckBoxShape.CIRCLE。<br />**说明:**<br/>CheckboxGroup组件将按照设置的形状显示。<br/>CheckboxGroup内所有未单独设置shape类型的Checkbox,其形状将与CheckboxGroup保持一致。<br/>CheckboxGroup内已单独设置shape类型的Checkbox,其形状将优先于CheckboxGroup的设置,按照自身设置显示。 |
237
238## 事件
239
240除支持[通用事件](ts-component-general-events.md)外,还支持以下事件:
241
242### onChange
243
244onChange(callback: OnCheckboxGroupChangeCallback)
245
246CheckboxGroup的选中状态或群组内的Checkbox的选中状态发生变化时,触发回调。
247
248**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
249
250**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
251
252**系统能力:** SystemCapability.ArkUI.ArkUI.Full
253
254**参数:**
255
256| 参数名   | 类型                                                         | 必填 | 说明               |
257| -------- | ------------------------------------------------------------ | ---- | ------------------ |
258| callback | [OnCheckboxGroupChangeCallback](#oncheckboxgroupchangecallback18) | 是   | 多选框群组的信息。 |
259
260### onChange<sup>18+</sup>
261
262onChange(callback: Optional\<OnCheckboxGroupChangeCallback>)
263
264CheckboxGroup的选中状态或群组内的Checkbox的选中状态发生变化时,触发回调。与[onChange](#onchange)相比,callback参数新增了对undefined类型的支持。
265
266**卡片能力:** 从API version 18开始,该接口支持在ArkTS卡片中使用。
267
268**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
269
270**系统能力:** SystemCapability.ArkUI.ArkUI.Full
271
272**参数:**
273
274| 参数名   | 类型                                                         | 必填 | 说明                                                         |
275| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
276| callback | [Optional](ts-universal-attributes-custom-property.md#optionalt12)\<[OnCheckboxGroupChangeCallback](#oncheckboxgroupchangecallback18)> | 是   | 多选框群组的信息。<br/>当callback的值为undefined时,不使用回调函数。 |
277
278## OnCheckboxGroupChangeCallback<sup>18+</sup>
279
280type OnCheckboxGroupChangeCallback  = (value: CheckboxGroupResult) => void
281
282多选框群组的信息。
283
284**卡片能力:** 从API version 18开始,该接口支持在ArkTS卡片中使用。
285
286**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
287
288**系统能力:** SystemCapability.ArkUI.ArkUI.Full
289
290**参数:**
291
292| 参数名 | 类型                                                | 必填 | 说明               |
293| ------ | --------------------------------------------------- | ---- | ------------------ |
294| value  | [CheckboxGroupResult](#checkboxgroupresult对象说明) | 是   | 多选框群组的信息。 |
295
296## CheckboxGroupResult对象说明
297
298多选框群组的名称和状态。
299
300**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
301
302**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
303
304**系统能力:** SystemCapability.ArkUI.ArkUI.Full
305
306| 名称    | 类型   | 只读 | 可选 | 说明      |
307| ------ | ------ | ------- | ------- | ------- |
308| name   | Array&lt;string&gt; | 否 | 否 | 群组内所有被选中的多选框名称。 |
309| status | [SelectStatus](#selectstatus枚举说明) | 否 | 否 | 选中状态。 |
310
311## SelectStatus枚举说明
312
313多选框群组的选中状态。
314
315**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
316
317**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
318
319**系统能力:** SystemCapability.ArkUI.ArkUI.Full
320
321| 名称  | 说明 |
322| ----- | -------------------- |
323| All   | 群组多选择框全部选择。 |
324| Part  | 群组多选择框部分选择。 |
325| None  | 群组多选择框全部没有选择。 |
326
327## 示例
328
329### 示例1(设置多选框群组)
330
331该示例用于控制多选框全选或者不全选状态。
332
333```ts
334// xxx.ets
335@Entry
336@Component
337struct CheckboxExample {
338  build() {
339    Scroll() {
340      Column() {
341        // 全选按钮
342        Flex({ justifyContent: FlexAlign.Start, alignItems: ItemAlign.Center }) {
343          CheckboxGroup({ group: 'checkboxGroup' })
344            .checkboxShape(CheckBoxShape.ROUNDED_SQUARE)
345            .selectedColor('#007DFF')
346            .onChange((itemName: CheckboxGroupResult) => {
347              console.info("checkbox group content" + JSON.stringify(itemName));
348            })
349          Text('Select All').fontSize(14).lineHeight(20).fontColor('#182431').fontWeight(500)
350        }
351
352        // 选项1
353        Flex({ justifyContent: FlexAlign.Start, alignItems: ItemAlign.Center }) {
354          Checkbox({ name: 'checkbox1', group: 'checkboxGroup' })
355            .selectedColor('#007DFF')
356            .shape(CheckBoxShape.ROUNDED_SQUARE)
357            .onChange((value: boolean) => {
358              console.info('Checkbox1 change is' + value);
359            })
360          Text('Checkbox1').fontSize(14).lineHeight(20).fontColor('#182431').fontWeight(500)
361        }.margin({ left: 36 })
362
363        // 选项2
364        Flex({ justifyContent: FlexAlign.Start, alignItems: ItemAlign.Center }) {
365          Checkbox({ name: 'checkbox2', group: 'checkboxGroup' })
366            .selectedColor('#007DFF')
367            .shape(CheckBoxShape.ROUNDED_SQUARE)
368            .onChange((value: boolean) => {
369              console.info('Checkbox2 change is' + value);
370            })
371          Text('Checkbox2').fontSize(14).lineHeight(20).fontColor('#182431').fontWeight(500)
372        }.margin({ left: 36 })
373
374        // 选项3
375        Flex({ justifyContent: FlexAlign.Start, alignItems: ItemAlign.Center }) {
376          Checkbox({ name: 'checkbox3', group: 'checkboxGroup' })
377            .selectedColor('#007DFF')
378            .shape(CheckBoxShape.ROUNDED_SQUARE)
379            .onChange((value: boolean) => {
380              console.info('Checkbox3 change is' + value);
381            })
382          Text('Checkbox3').fontSize(14).lineHeight(20).fontColor('#182431').fontWeight(500)
383        }.margin({ left: 36 })
384      }
385    }
386  }
387}
388```
389![checkboxGroup](figures/checkboxGroup.gif)
390
391### 示例2(自定义勾选样式)
392
393该示例通过配置mark实现自定义多选框群组的勾选样式。
394
395```ts
396// xxx.ets
397@Entry
398@Component
399struct Index {
400
401  build() {
402    Row() {
403      Column() {
404        Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) {
405          CheckboxGroup({ group: 'checkboxGroup' })
406            .checkboxShape(CheckBoxShape.ROUNDED_SQUARE)
407            .selectedColor(Color.Orange)
408            .onChange((itemName: CheckboxGroupResult) => {
409              console.info("checkbox group content" + JSON.stringify(itemName));
410            })
411            .mark({
412              strokeColor:Color.Black,
413              size: 40,
414              strokeWidth: 5
415            })
416            .unselectedColor(Color.Red)
417            .width(30)
418            .height(30)
419          Text('Select All').fontSize(20)
420        }.margin({right:15})
421        Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) {
422          Checkbox({ name: 'checkbox1', group: 'checkboxGroup' })
423            .selectedColor(0x39a2db)
424            .shape(CheckBoxShape.ROUNDED_SQUARE)
425            .onChange((value: boolean) => {
426              console.info('Checkbox1 change is'+ value);
427            })
428            .mark({
429              strokeColor:Color.Black,
430              size: 50,
431              strokeWidth: 5
432            })
433            .unselectedColor(Color.Red)
434            .width(30)
435            .height(30)
436          Text('Checkbox1').fontSize(20)
437        }
438        Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) {
439          Checkbox({ name: 'checkbox2', group: 'checkboxGroup' })
440            .selectedColor(0x39a2db)
441            .shape(CheckBoxShape.ROUNDED_SQUARE)
442            .onChange((value: boolean) => {
443              console.info('Checkbox2 change is' + value);
444            })
445            .width(30)
446            .height(30)
447          Text('Checkbox2').fontSize(20)
448        }
449        Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) {
450          Checkbox({ name: 'checkbox3', group: 'checkboxGroup' })
451            .selectedColor(0x39a2db)
452            .shape(CheckBoxShape.ROUNDED_SQUARE)
453            .onChange((value: boolean) => {
454              console.info('Checkbox3 change is' + value);
455            })
456            .width(30)
457            .height(30)
458          Text('Checkbox3').fontSize(20)
459        }
460      }
461      .width('100%')
462    }
463    .height('100%')
464  }
465}
466```
467
468![checkboxGroup](figures/checkboxGroup2.gif)
469
470### 示例3(设置全选)
471
472该示例实现了在结合带缓存功能的组件使用时(如List),未被创建的Checkbox全选的功能。
473
474```ts
475class BasicDataSource implements IDataSource {
476  private listeners: DataChangeListener[] = [];
477  private originDataArray: checkboxItemData[] = [];
478
479  public totalCount(): number {
480    return this.originDataArray.length;
481  }
482
483  public getData(index: number): checkboxItemData {
484    return this.originDataArray[index];
485  }
486
487  registerDataChangeListener(listener: DataChangeListener): void {
488    if (this.listeners.indexOf(listener) < 0) {
489      console.info('add listener');
490      this.listeners.push(listener);
491    }
492  }
493
494  unregisterDataChangeListener(listener: DataChangeListener): void {
495    const pos = this.listeners.indexOf(listener);
496    if (pos >= 0) {
497      console.info('remove listener');
498      this.listeners.splice(pos, 1);
499    }
500  }
501
502  notifyDataReload(): void {
503    this.listeners.forEach(listener => {
504      listener.onDataReloaded();
505    });
506  }
507
508  notifyDataAdd(index: number): void {
509    this.listeners.forEach(listener => {
510      listener.onDataAdd(index);
511    });
512  }
513
514  notifyDataChange(index: number): void {
515    this.listeners.forEach(listener => {
516      listener.onDataChange(index);
517    });
518  }
519
520  notifyDataDelete(index: number): void {
521    this.listeners.forEach(listener => {
522      listener.onDataDelete(index);
523    });
524  }
525
526  notifyDataMove(from: number, to: number): void {
527    this.listeners.forEach(listener => {
528      listener.onDataMove(from, to);
529    });
530  }
531
532  notifyDatasetChange(operations: DataOperation[]): void {
533    this.listeners.forEach(listener => {
534      listener.onDatasetChange(operations);
535    });
536  }
537}
538
539interface checkboxItemData {
540  isCheck: boolean;
541  itemName: string;
542}
543
544
545class MyDataSource extends BasicDataSource {
546  private dataArray: checkboxItemData[] = [];
547
548  public totalCount(): number {
549    return this.dataArray.length;
550  }
551
552  public getData(index: number): checkboxItemData {
553    return this.dataArray[index];
554  }
555
556  public pushData(data: checkboxItemData): void {
557    this.dataArray.push(data);
558    this.notifyDataAdd(this.dataArray.length - 1);
559  }
560
561  public operateData(isSelect: boolean): void {
562    this.dataArray.forEach((item) => {
563      item.isCheck = isSelect
564    })
565
566    this.notifyDataReload()
567  }
568
569  public operateItem(isSelect: boolean, index: number): void {
570    this.dataArray[index].isCheck = isSelect
571    this.notifyDataChange(index)
572  }
573
574  public getDataSource(): checkboxItemData[] {
575    return this.dataArray
576  }
577}
578
579@Entry
580@Component
581struct MyComponent {
582  private data: MyDataSource = new MyDataSource();
583
584  aboutToAppear() {
585    for (let i = 0; i <= 100; i++) {
586      this.data.pushData({ isCheck: false, itemName: `checkbox ${i}` });
587    }
588  }
589
590  @State isSelectAll: boolean = false
591
592  build() {
593    Column() {
594      Flex({ justifyContent: FlexAlign.Start, alignItems: ItemAlign.Center }) {
595        CheckboxGroup({ group: "group" })
596          .selectAll(this.isSelectAll)
597          .hitTestBehavior(HitTestMode.None)
598        Text("全选").fontSize(25)
599      }.onClick(() => {
600        this.isSelectAll = !this.isSelectAll
601        this.data.operateData(this.isSelectAll)
602      }).padding({ left: 10 })
603
604      List({ space: 3 }) {
605        LazyForEach(this.data, (item: checkboxItemData, index: number) => {
606          ListItem() {
607            Row() {
608              Checkbox({ name: `checkbox-${item}` })
609                .select(item.isCheck)
610                .onChange((value: boolean) => {
611                  this.data.operateItem(value, index)
612                  let dataSource = this.data.getDataSource()
613                  this.isSelectAll = dataSource.every((item) => item.isCheck === true)
614                })
615              Text(item.itemName).fontSize(20)
616            }.margin({ left: 10, right: 10 })
617          }
618
619        }, (item: checkboxItemData) => item.itemName + item.isCheck)
620      }.cachedCount(5)
621    }
622  }
623}
624```
625
626![checkboxgroup04](figures/checkboxgroup04.gif)