wp7: выделение выбранного изображения в списке - PullRequest
1 голос
/ 04 октября 2011

У меня есть список, в котором я отображаю список значков.Я хочу выделить выбранный элемент, изменив цвет значка с «белого» на «синий».Для меня это звучит просто, но кажется, что это очень сложно.

У кого-нибудь есть предложения относительно лучшего подхода?

Ответы [ 2 ]

2 голосов
/ 04 октября 2011

Хотите изменить реальный цвет значка или выделить выбранный элемент в 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 голос
/ 30 марта 2012

Для первого случая вам нужно создать два изображения значков, одно для выбранного, а другое для обычного вида. Вы можете изменить изображение в списке при изменении выбора, как показано ниже

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

    }
...