实现 dynamic/cascading 列表框的最佳方式

Best way to implement dynamic/cascading ListBoxes

我目前正在为如何最好地在我的应用程序中设置 dynamic/cascading 列表框而苦恼。我有一个分层 table,我希望用户能够从最高级别 select 和较低级别的列表框根据更高级别的用户更新 selections。

我正在使用 C#

开发 WPF/MVVM 应用程序

示例数据:

Z000 Z100 Z200 Z300
A000 A100 A110 A111
A000 A100 A110 A112
A000 A200 A210 A211
A000 A200 A210 A212
A000 A300 A310 A311
A000 A300 A320 A321
B000 B100 B110 B111
B000 B100 B110 B112
B000 B200 B210 B211
B000 B200 B220 B222
C000 C100 C110 C111
C000 C100 C110 C112
C000 C100 C120 C121
C000 C200 C210 C211

当应用程序加载时,它应该显示四个列表框,每个列表框显示 Z000、Z100、Z200、Z300 的不同值。

用户可以select来自任何列表框的选项,而不考虑层次结构。

例如。如果用户 select 来自第二个列表框 (Z100) 项目 [A200],则所有较低的列表框都应更新以显示 A200 下 Z200[[=27= 的不同值]A210] 和 Z300[A211, A212] 更高级别的列表框不应受到影响 (Z000)

对于任何混淆,我很难以书面形式描述这种情况。

我发现层叠 ListBox 的想法非常有趣。所以我创建了一个项目来实现它。请检查我的 GitHub repo。这里有一些截图。希望我理解正确。