wp7:在列表框中突出显示所选图像

时间:2011-10-03 23:35:19

标签: windows-phone-7 listbox selecteditem

我有一个列表框,我在其中显示图标列表。我想通过将图标颜色从“白色”更改为“蓝色”来突出显示所选项目。这听起来很简单,但似乎很难。

有没有人对最佳方法提出建议?

2 个答案:

答案 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;
        }

    }