c# - WPF 绑定到字典中的 ObserVableCollection
问题描述
大家好!
我目前的情况:
- 我有一个由“DataBaseSystem”对象组成的可观察集合(“PipesSystemList”):
public static ObservableCollection<DatabaseSystem> PipesSystemList { get; set; } = new ObservableCollection<DatabaseSystem>();
public class DatabaseSystem
{
public string System { get; set; }
public bool IsChecked { get;set;}
}
- 我成功地将这个集合绑定到我的组合框,如下所示,一切正常:
<ComboBox ItemsSource="{Binding ElementName=MainView,Path=DataContext.PipesSystemList}"
Padding="2" Margin="5 0 5 0" Width="70" Height="20"
Foreground ="#F1F1F1" Style="{StaticResource ComboBoxStyleDark}">
<ComboBox.ItemTemplate>
<DataTemplate DataType="local:DatabaseSystem">
<StackPanel Orientation="Horizontal">
<CheckBox Content="{Binding System}" Foreground="#F1F1F1"
IsChecked="{Binding IsChecked}"
Command="{Binding ElementName=MainView, Path=DataContext.PipeTabChosenSystemChangedCommand }"/>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
我想要实现的目标:因为我有多种设备类型,所以我想将所有必需的收藏集中在一个地方。所以我创建了一个字典:
var SystemTabLists = new Dictionary<string, ObservableCollection<DatabaseSystem>>()
{
{"Document List",new ObservableCollection<DatabaseSystem>()},
{"Pipes",new ObservableCollection<DatabaseSystem>()},
{"Valves",new ObservableCollection<DatabaseSystem>()},
{"Sensors",new ObservableCollection<DatabaseSystem>()},
{"Vessels",new ObservableCollection<DatabaseSystem>()},
{"Heat Exchangers",new ObservableCollection<DatabaseSystem>()},
{"Filters",new ObservableCollection<DatabaseSystem>()},
{"Other Equipment",new ObservableCollection<DatabaseSystem>()}
};
在此之后,我尝试将组合框绑定到属于 Pipes 的集合(我成功地用正确的元素填充了集合,所以我需要的数据就在那里):
<ComboBox ItemsSource="{Binding ElementName=MainView,Path=DataContext.SystemTabLists[Pipes]}"
Padding="2" Margin="5 0 5 0" Width="70" Height="20"
Foreground ="#F1F1F1" Style="{StaticResource ComboBoxStyleDark}">
<ComboBox.ItemTemplate>
<DataTemplate DataType="local:DatabaseSystem">
<StackPanel Orientation="Horizontal">
<CheckBox Content="{Binding System}" Foreground="#F1F1F1"
IsChecked="{Binding IsChecked}"
Command="{Binding ElementName=MainView, Path=DataContext.PipeTabChosenSystemChangedCommand }"/>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
不幸的是,这不起作用。当我调试代码并打开绑定跟踪时,我收到以下消息:“由于缺少信息,BindingExpression 无法检索值。BindingExpression:Path=DataContext.SystemTabLists[Pipes] ”
有人可以帮我我做错了什么吗?或者指出这是否不可能。
提前致谢。
解决方案
推荐阅读
- powershell - 如何使用powershell函数返回期望值?
- powershell - 删除具有名字和姓氏的批量用户
- ios - 在 Objective C 中看不到 Swift 变量/方法
- java - 如何使用java apache poi遍历excel工作表中某一列的值以获取值的索引
- angular - Angular.json 构建选项
- jquery - 当它的 ArrayOfString 时将 JSON 响应格式化为一个表
- java - DST 偏移量在我的开发服务器中不起作用
- c++ - 我的重复检查代码中的错误到底在哪里?
- game-physics - Cannon.js - 有没有办法将物理添加到角色模型中?
- c# - 向 citrix 客户端驱动程序发送消息