【问题标题】:WP7 How do I change the image of a button when clickedWP7单击时如何更改按钮的图像
【发布时间】:2011-07-02 04:18:28
【问题描述】:

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

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

private void button1_click(object sender, RoutedEventArgs e)
{

}

我不知道在里面放什么。通常我会认为它是这样的:

button1.image = "image path";

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

【问题讨论】:

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


    【解决方案1】:

    写下你想改变图片的地方

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

    【讨论】:

      【解决方案2】:

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

      除了手动调整图像以匹配按钮按下状态之外,相信您还可以达到您想要的效果-按钮图像在按下时变为“灰色”-您可以使用“样式”和使用“行为”。看看类似的帖子:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • listBox 的想法很有意义并且会很有帮助,但是我有六个按钮排列在 2x3 网格中,所以我想不出 listBox 的工作方式。当我尝试使用您建议的代码块时,使用位图图像时出错,它说它在命名空间中不存在。我应该使用特定的命名空间吗?
        • 通过将WrapPanel 指定为ItemsPanel,可以在ListBox 中实现2x3 网格效果,如本博文所示:windowsphonegeek.com/articles/WP7-WrapPanel-in-depthBitmapImage 类位于 System.Windows.Media.Imaging 命名空间中,因此您需要为该命名空间 (msdn.microsoft.com/en-us/library/…) 添加 using 语句。
        猜你喜欢
        • 1970-01-01
        • 2013-07-24
        • 1970-01-01
        • 1970-01-01
        • 2013-11-05
        • 1970-01-01
        • 2018-04-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多