在 Metro 风格应用中以编程方式更改按钮的背景图像

3
我如何在使用VS 2012的Metro Style应用程序中更改按钮的背景图像? 在Windows Forms中,按钮有一个可以设置的BackgroundImage属性。 这个功能在Metro Style应用程序中可用吗?
在C#中,我可以在Windows Forms中执行以下操作:
btnImage.BackgroundImage = System.Drawing.Image.FromFile("...\Pictures\flower.png");
在Metro Style应用程序中,您如何以编程方式更改按钮的背景图像?
1个回答

2
很简单,只需要修改按钮的XAML代码,加入一个闭合标签,并在其中间加入一个图像控件,如下所示:
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
    <Button HorizontalAlignment="Left" Margin="532,285,0,0" VerticalAlignment="Top" Height="135" Width="283">
        <Image Source="Assets/Logo.png" />
    </Button>
</Grid>

在上面的代码片段中,我将图像源指向了内置模板中的Logo.png文件,用于C#/XAML应用程序。
另一种方法是在Visual Studio的Blend中打开项目,在Assets选项卡中拖动图像到设计界面(确保选择了所需的容器),然后右键单击图像并选择“转换为控件...”,选择Button控件。
这种技术的唯一缺点是您不会获得内置Button控件的默认VisualStates。相反,Blend会为您定义一个具有空VisualStates的样式,您可以按需进行样式设置。
希望这能帮到您。

谢谢您的快速回复:我会尝试一下。但是,例如在C#中如何以编程方式更改按钮的背景图像呢?例如,在某个事件上,将按钮的背景更改为另一个图像或删除它(使其为空)?再次感谢。 - nv.snow
Button.ImageSource = 设置这个。 - 123 456 789 0
@LeoLuis - 谢谢 - 我尝试了,但是它给了我一个错误:“Windows.UI.Xaml.Controls.Button不包含“ImageSource”的定义...”不确定我应该在这里使用什么指令。 - nv.snow
4
与XAML相同的方式 - 您可以设置button.Content = new Image {ImageSource = new BitmapImage(new Uri("ms-appx:///Assets/Logo.png"))}; ...或者使用ImageBrush - 例如,button.Background = new ImageBrush {ImageSource = new BitmapImage(new Uri("ms-appx:///Assets/Logo.png"))}; - Filip Skakun
@FilipSkakun - 明白了。非常感谢大家!!!使用System.Windows.Media.Imaging; button.Background = new ImageBrush {ImageSource = new BitmapImage(new Uri("ms-appx:///Assets/Logo.png"))}; - nv.snow
对不起,应该是Button.Content然后是new Image.. 我的错。 - 123 456 789 0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接