我有几个包含数据库数据的列表。列表框用作图表的过滤器,列表框的外观应根据在其他列表框中选择的内容而改变。
这是我正在尝试做的一个简化示例:
Class Region
{
public int RegionID { get; set; }
public string RegionName { get; set; }
}
Class Country
{
public int CountryID { get; set; }
public string CountryName { get; set; }
public int RegionID { get; set; }
}
private void fillListBoxes()
{
List<Region> allRegions = getRegions();
lstRegionsFilter.ItemsSource = allRegions;
}
一个国家显然属于一个地区,我也有例如港口,然后位于一个国家等。
所有列表框项目都是这样定义的复选框:
<ListBox Name="lstRegionsFilter">
<ListBox.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding Path=RegionName}"
Tag="{Binding Path=RegionID}"
Click="CheckBox_Click"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
当单击任何列表框中的项目时,它们将被添加到过滤器列表中,该过滤器将过滤显示图表的数据。例如,如果在 Regions 下选择了“Europe”,那么所有属于欧洲的国家/地区都应该在国家/地区的列表框中以不同的颜色显示,例如蓝色。
因此,在代码中,我想遍历国家列表框中的复选框并将其前景色设置为取决于显示/标记到该复选框的值是否是属于所选区域的国家/地区,因此通常在 foreach 循环中。但是列表框中的项目是区域类型的,那么我如何访问底层复选框?这应该是我知道的非常基本的东西,但它让我发疯!