首页 > 解决方案 > 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。

*显示的表单在组合框左侧有一个文本块,该文本块绑定到字符串属性 - 该值将是字典的键。

我不知道如何在不破坏模式的情况下做到这一点。我会认为某种命令可以设置组合框的内容,但我不知道如何获取命令所需的密钥。基于这个想法,我也可能离谱。

标签: c#wpfmvvm

解决方案


我最终创建了一个字符串列表。

当绑定属性的 Get() 被调用时,那里有一个函数可以检索列表中的下一个列表并将其传递。

这有点俗气,但也是最小的代码更改。


推荐阅读