我有幾個包含數據庫數據的列表。列表框用作圖表的過濾器,並且列表框的外觀應該根據在其他列表框中選擇的內容而改變。在wpf列表框中設置複選框項目的前景文本顏色
這裏是我想要做專一個簡單的例子:
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>
正如在任何物品列表框中單擊將它們添加到過濾器將過濾接列表r顯示圖表的數據。例如,如果在「地區」下選擇「歐洲」,則屬於歐洲的所有國家/地區的國家/地區的列表框中的顏色應該不同,例如藍色。
所以在代碼中,我想通過在國家列表框中複選框環和依靠,如果顯示的值設置其前景顏色的東西/標記該複選框是屬於選定區域的國家如此通常在foreach循環中。但是,列表框中的項目屬於Region類型,所以如何訪問基礎複選框?這應該是我所知道的非常基本的東西,但它使我瘋狂!
嗨Miklós,並感謝您的快速答覆。不幸的是,這不是我正在尋找的。我需要更改列表框中項目的文本顏色,但它們並不是經過選擇/檢查的。顏色需要更改,但不檢查複選框。我試圖在這裏進一步解釋這個案例http://i48.tinypic.com/1zh3czc.png – ardal
其實,這正是你需要的。該約束不是基於該國是否被檢查,而是基於該國的父母區是否被檢查。這就是爲什麼叫做「IsParentChecked」。你應該嘗試實施他的建議。 – Alain
即使在它們上面引發了NotifyPropertyChanged,有時只讀屬性也不會更新。如果試驗更新問題,則聲明爲正常財產。 – GameAlchemist