如何在代码中单击时更改按钮的背景图像?

时间:2013-07-17 14:12:19

标签: c# button background windows-phone-8 pressed

在Stackoverflow中有一个类似我的类似问题,但它只解释了如何在XAML中更改它。我想知道如何在代码中更改它。

这是一张图片,展示了如何使用Blend在XAML中执行此操作:

Image

完整尺寸的链接:https://snag.gy/4Skk4.jpg

基本上我想在C#中更改按钮按下状态的背景,但我似乎无法在Internet上找到任何示例。它必须在代码中,因为有时按钮的图像会改变,因此按钮的按下图像也必须改变。

以下代码只是为了改变按钮的图像,它只是一个开始。

image.ImageSource = new System.Windows.Media.Imaging.BitmapImage(new Uri(@"images/Button-warning-icon.png", UriKind.Relative));
image.Stretch = Stretch.Uniform;
buttonWarnings.Background = image;

3 个答案:

答案 0 :(得分:1)

如果我理解正确,那么您正试图在"按下"中更改按钮控件的外观。视觉状态。

我不在我的开发计算机附近尝试一下,但是要打开你的链接#34;我会给出一个方向。

首先,正如您在Blend屏幕截图中所注意到的,每个视觉状态都用Storyboard表示,它定义了各种属性的变化方式。在您的情况下,您正在寻找更改背景属性。

VisualStateGroups及其状态由控件定义。您可以在重新模板控件时覆盖它们。因此,使用Blend重新模板按钮控件,使用"编辑模板" - >"编辑副本"。

然后,在代码中,您应该能够执行以下操作:

1)获取视觉状态(除非您重新模板控件AFAIK,否则这将无效)

var visualStateGroups = VisualStateManager.GetVisualStateGroups(buttonWarnings);

2)获取" CommonStates"的VisualStateGroup。来自visualStateGroups    集合

var commonStatesGroup = visualStateGroups.Find((g) => ((VisualStateGroup)g).Name == "CommonStates") as VisualStateGroup;

3)获得" Pressed"的VisualState:

var pressedVisualState = commonStatesGroup.Find((vs) => ((VisualState)vs).Name == "Pressed") as VisualState;

4)更改该州的故事板

pressedVisualState.Storyboard = newStoryboardWithCustomImageBackgroundProperty;

免责声明:我现在不在电脑前试试 - 理论上这一切都是

答案 1 :(得分:0)

答案 2 :(得分:0)

其实很简单,

按下按钮状态时....请参阅上面上传的图像中的第3部分。 在所有颜色之上有一行包含5个图标。

单击第4个图标。 它会显示您选择图像作为背景的选项。 enter image description here