现在我有一个六个按钮的网格,里面都有不同的图像。我有另外一组六个图像,它们是原始的,只有灰色色调代表你选择它。当我选择按钮时,如何将图像更改为按钮到新的“所选图像”。
我假设你在方法中这样做:
private void button1_click(object sender, RoutedEventArgs e)
{
}
我无法弄清楚要放在这里的内容。通常我会认为它会是这样的:
button1.image = "image path";
但是,在制作WP7应用程序时,您无法使用image关键字。有关如何在点击时更改按钮图像的建议吗?
答案 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需要一些时间来习惯 - 但你会到达那里。祝你好运!