我有一個列表視圖,通過數據模式顯示行。當我選擇一個項目時,我將所選項目添加到可觀察集合中,並將「CarIsSelected」的值設置爲true,以便知道選擇了哪個項目。我在設置添加到observablecollection的項目的背景顏色時遇到了問題?我希望這是有道理的。以下是我迄今爲止的代碼。舉另一個例子,如果我選擇「item1」,我將「item1」添加到集合中並突出顯示「item1」的行。然後選擇「item2」,將「item2」添加到集合中,並突出顯示「item2」的行。因此應該突出顯示「item1」和「item2」。爲列表視圖中的選定項目設置背景
XAML:
<ListView Name="lstExistingProblemList" HorizontalAlignment="Left" VerticalAlignment="Bottom"
ItemsSource="{Binding Path=ListOfCars}" SelectedItem="{Binding SelectedCar}"
SelectionMode="Single" Width="391" Grid.ColumnSpan="2">
<ListView.ItemTemplate>
<DataTemplate>
<Label Width="391" Margin="0,0,5,0" HorizontalAlignment="Left">
<Label.Content>
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0}-{1}">
<Binding Path="Make" />
<Binding Path="Model" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</Label.Content>
</Label>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
視圖模型:
ObservableCollection<CarsInfo> selectedCarsLists = new ObservableCollection<CarsInfo>();
List<CarsInfo> listOfCars = new List<CarsInfo>();
CarsInfo selectedCar;
public List<CarsInfo> ListOfCars
{
get
{
listOfCars = DataSource.GetCarInfo();
return listOfCars;
}
}
public ObservableCollection<CarsInfo> SelectedCarsLists
{
get
{
return selectedCarsLists;
}
}
public CarsInfo SelectedCar
{
get
{
return selectedCar;
}
set
{
if (selectedCar != value)
{
selectedCar = value;
selectedCar.CarIsSelected = true;
selectedCarsLists.Add(selectedCar);
}
}
}
類:
public int Year { get; set; }
public string Description { get; set; }
public string Make { get; set; }
public string Model { get; set; }
public bool CarIsSelected { get; set; }
看看http://stackoverflow.com/questions/6171502/change- background-color-of-listview-row-programmatically-wpf Gishu的回答。創建一個屬性或函數,基於IsSelected進行切換以綁定爲顏色。 – JDwyer
你應該使用顏色轉換器來選擇項目的顏色變化 –