WP7 Как изменить изображение кнопки при нажатии - PullRequest
2 голосов
/ 22 февраля 2011

Прямо сейчас у меня есть сетка из шести кнопок, все с разными изображениями внутри.У меня есть еще один набор из шести изображений, которые являются оригинальными с серым оттенком, чтобы показать, что вы выбираете его.Как изменить изображение на кнопку на новое «выбранное изображение» при выборе кнопки.

Я предполагаю, что вы делаете это следующим образом:

private void button1_click(object sender, RoutedEventArgs e)
{

}

Явозникают проблемы с выяснением того, что нужно положить внутрь здесь.Обычно я думаю, что это будет что-то вроде:

button1.image = "image path";

Однако при создании приложения WP7 вы не можете использовать ключевое слово image.Любой совет, как изменить изображение кнопки при нажатии?

Ответы [ 3 ]

4 голосов
/ 27 сентября 2013

Напишите, где вы хотите изменить изображение

var brush = new ImageBrush();
brush.ImageSource = new BitmapImage(new Uri("/Images/YourImage.png", 
                                            UriKind.Relative));
btn.Background = brush;
2 голосов
/ 22 февраля 2011

В Silverlight (на котором построен каркас Windows Phone 7) элемент управления Button не имеет свойства Image. Я предполагаю, что вы создали свои оригинальные кнопки, поместив элемент Image в качестве дочернего элемента Button. Предполагая, что вы хотите одинаковое поведение для всего набора кнопок, тогда может иметь смысл использовать визуальные состояния. Вы можете добиться единообразного внешнего вида, изменив непрозрачность ContentPresenter, например Opacity 0,75 для «нормального» состояния и Opacity 1,0 для «выбранного».

Определить, какая кнопка является выбранной, было бы более сложной задачей, но если вы оберните свои кнопки в ListBox, тогда вы можете использовать визуальное состояние «Выбрано» в ItemContainerStyle.

Если вы хотите продолжить уже выбранный вами подход, то, учитывая, что вы знаете, что содержимое кнопки является Image, вы можете сделать что-то вроде следующего:

private void button1_click(object sender, RoutedEventArgs e)
{
    Button source = (Button)sender;
    Image content = source.Content as Image;
    if (null != content)
    {
        content.Source = new BitmapImage(new Uri("image path"));
    }
}

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

0 голосов
/ 22 февраля 2011

То, что вы делаете, является действительно хорошим учебным упражнением - вы многое узнаете о Silverlight, экспериментируя так.

В дополнение к ручной настройке изображения в соответствии с состоянием нажатия кнопки, я полагаю, вы также можете добиться того эффекта, который вы ищете - что при нажатии кнопки изображение становится «серым» - вы можете сделать это с помощью «Стили» и используя "Поведения". Взгляните на сообщения вроде:

Некоторые из XAML в этом могут показаться пугающими - и использование Expression Blend требует некоторого времени, чтобы привыкнуть - но вы получите это. Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...