2011-02-22 100 views
2

现在我有一个由六个按钮组成的网格,它们都有不同的图像。我还有一组六个图像,它们是原始的灰色色调,代表你选择它。当我选择按钮时,如何将图像更改为新的“选定图像”按钮。WP7点击时如何更改按钮的图像

我假设你做的方法:

private void button1_click(object sender, RoutedEventArgs e) 
{ 

} 

我有麻烦找出放在里面有什么在这里。通常我会认为它会是这样的:

button1.image = "image path"; 

但是,当制作一个WP7应用程序,你不能使用图像关键字。有关如何在点击时更改按钮图像的任何建议?

回答

2

在Silverlight(构建Windows Phone 7框架)中,Button控件没有Image属性。我推测你已经创建了原始按钮,将一个Image元素作为Button的子元素。假设你想要一整套按钮具有相同的行为,那么使用视觉状态代替它可能是有意义的。您可以通过更改ContentPresenter的不透明度来获得一致的外观,例如,对于“正常”状态为0.75的Opacity和对于“选定”状态为1.0的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

ListBox中的想法是有道理的,并会是非常有益的,但是我有被安排在2×3格六个按钮,所以我不能想到的listBox将工作的方式。当我尝试使用位图图像时出现错误的代码块时,它说它不存在于名称空间中。我应该使用特定的命名空间吗? – Connor 2011-02-22 18:39:06

0

你在做什么是一个非常好的学习练习 - 通过这样的实验,你将学到很多关于Silverlight的知识。

除了手动调整图像以匹配按钮按下状态,我相信你也可以实现你正在寻找的效果 - 当按下时按钮图像变成“灰色” - 你可以使用“样式”并使用“行为”。看看类似的帖子:

在这个有些XAML的可能看起来令人生畏 - 使用Expression Blend将需要一些时间来适应 - 但你会得到那里。祝你好运!

4

写要改变图像

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