我在这里没有看到任何真正糟糕的设计。
您可以为此构建 UI 作为用户必须从中选择的产品组列表(ListBox 绑定到 ProductGroups 集合),然后您可以拥有一个带有 ListBox、名为 CurrentGroupId 的属性和一些控制按钮的用户控件(例如“确定”)。将 CurrentGroupId 绑定到 ProductGroups 列表框的选定值。当 CurrentGroupId 更改或参数集合更改时,您应该使用 LINQ 或其他方式过滤此内部 ListBox 项目 - 基本上用 GroupParameter-s 重新填充 ListBox,其中 CurrentGroupId 与所选 ProductGroupId 匹配。ListBox 项应该是 GroupParameter-s 对象。
现在(终于:))回答您的问题:您可以使用数据模板列表的项目来拥有一个文本框,像这样绑定到 Value 属性(这里 'local' 是您的命名空间):
<DataTemplate DataType={x:Type local:GroupParameter}>
<StackPanel Orientation="Horizontal">
<TextBox Text="{Binding Value, Mode=TwoWay}" />
<Button Content="OK" Click=INSERT_YOUR_OK_HANDLER_HERE />
<Button Content="Cancel" Click=INSERT_YOUR_CANCEL_HANDLER_HERE />
</StackPanel>
</DataTemplate>
如果您需要让用户能够添加新参数,您可以创建一些添加功能,该功能将在参数集合中添加一个具有当前选定组 ID 的新条目。然后用户可以在您的用户控件中编辑刚刚添加的项目。
希望它有所帮助,如果我刚才所说的很难理解,我想我可以用代码编写大部分内容。不要犹豫,问我:)