c# - MVVM 将组合框内容绑定到字典中的列表
问题描述
问题在于显示多个组合框的表单 - 每个组合框的内容都是一个整数范围。可以有多个组合框,并且每个组合框的整数范围可能不同,并且这些信息都不会提前知道。
XAML 中这些组合框的 DataTemplate 是这样的
<DataTemplate x:Key="ListComboboxTemplate">
<ComboBox Margin="0,0,0,0" MinWidth="230" Height="22" ItemsSource="{Binding Path=DataContext.ListBoxContent, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"
... >
ListBoxContent 属性是字符串的 ObservableCollection(我不知道为什么它是可观察的 - 内容一旦设置就不会更改)。
当有 2 个或更多组合框具有整数范围并且范围不同时,就会出现该错误 - 加载它们的循环只是将它计算的列表分配给 ListBoxContent 属性;结果是所有组合框最终都具有相同的范围(当然这是最后一个计算的)。
我猜在我需要的 ViewModel 中,而不是一个简单的列表,比如字典,键入一个字符串*,其值是字符串的 ObservableCollection。
*显示的表单在组合框左侧有一个文本块,该文本块绑定到字符串属性 - 该值将是字典的键。
我不知道如何在不破坏模式的情况下做到这一点。我会认为某种命令可以设置组合框的内容,但我不知道如何获取命令所需的密钥。基于这个想法,我也可能离谱。
解决方案
我最终创建了一个字符串列表。
当绑定属性的 Get() 被调用时,那里有一个函数可以检索列表中的下一个列表并将其传递。
这有点俗气,但也是最小的代码更改。
推荐阅读
- c++ - OpenCL2 work_group_reduce_add 浮点输出不正确
- arrays - coffeescript:遍历数组中的对象
- android - 无法在 Android 中解析 ImageButton 的 id
- python - 如何在相关的 one_to_many 字段上正确使用 order_by 和 nulls_last?
- python - 数据框日期问题,concat 花费太多时间,图形输出错误
- python - 使用不同大小的输入迭代构建字符串
- php - 声明 PHP 类的其他方式?
- sql - 图表的自动轴
- arrays - SAS 阵列循环(执行 while 循环)
- c# - c# 无法从传输连接读取数据:一个现有连接被远程主机强行关闭