WP7如何在单击时更改按钮的图像

时间:2011-02-22 17:23:35

标签: c# image windows-phone-7 button

现在我有一个六个按钮的网格,里面都有不同的图像。我有另外一组六个图像,它们是原始的,只有灰色色调代表你选择它。当我选择按钮时,如何将图像更改为按钮到新的“所选图像”。

我假设你在方法中这样做:

private void button1_click(object sender, RoutedEventArgs e)
{

}

我无法弄清楚要放在这里的内容。通常我会认为它会是这样的:

button1.image = "image path";

但是,在制作WP7应用程序时,您无法使用image关键字。有关如何在点击时更改按钮图像的建议吗?

3 个答案:

答案 0 :(得分:4)

写下您想要更改图像的位置

var brush = new ImageBrush();
brush.ImageSource = new BitmapImage(new Uri("/Images/YourImage.png", 
                                            UriKind.Relative));
btn.Background = brush;

答案 1 :(得分:2)

在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方法将为您处理。

答案 2 :(得分:0)

你正在做的是一个非常好的学习练习 - 你会通过这样的实验来学习很多关于Silverlight的知识。

除了手动调整图像以匹配按钮状态,我相信你也可以达到你想要的效果 - 当按下按钮图像变成“灰色”时 - 你可以使用“样式”和使用“行为”。看一下这样的帖子:

其中的一些XAML可能看起来令人生畏 - 使用Expression Blend需要一些时间来习惯 - 但你会到达那里。祝你好运!