我有一个列表框,我在其中显示图标列表。我想通过将图标颜色从“白色”更改为“蓝色”来突出显示所选项目。这听起来很简单,但似乎很难。
有没有人对最佳方法提出建议?
答案 0 :(得分:2)
是否要更改图标的实际颜色或突出显示ListBox
中的所选项?如果是后者,则添加SelectionChanged
事件处理程序。在此处理程序中执行以下操作:
var lb = sender as ListBox;
var lbi = lb.ItemContainerGenerator.ContainerFromItem(lb.SelectedItem) as ListBoxItem;
lbi.BorderBrush = new SolidColorBrush( Colors.Blue );
// or
lbi.Background = new SolidColorBrush( Colors.Blue );
如果您要重置之前所选项目的BorderBrush
,请查看SelectionChangedEventArgs.RemovedItems
媒体资源。您可以使用类似于我发布的代码来重置颜色。
答案 1 :(得分:1)
对于第一种情况,您需要创建两个图标图像,一个用于选定图像,另一个用于普通视图。 您可以在选择更改事件的列表框中更改图像,如下所示
private void listBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
string imgUri = "selectedImageName.png";
BitmapImage bmp = new BitmapImage();
bmp.UriSource = new Uri(imgUri, UriKind.Relative);
(listBox1.SelectedItem as Image).Source = bmp;
// for resetting unselected items
BitmapImage bmp1 = new BitmapImage();
foreach (var v in e.RemovedItems)
{
imgUri = "imageNameForNormalView.png";
bmp1.UriSource = new Uri(imgUri, UriKind.Relative);
(v as Image).Source = bmp1;
}
}