0

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

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

图片

全尺寸链接: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;
4

3 回答 3

1

如果我对您的理解正确,您正试图在“按下”视觉状态下更改 Button 控件的外观。

我不在我的开发计算机附近尝试一下,但为了“解除对你的阻止”,我会给出一个方向。

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

和它们的VisualStateGroups状态由控件定义。您可以在重新模板化控件时覆盖它们。因此,使用带有“编辑模板”->“编辑副本”的混合来重新设计按钮控件。

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

1)获取视觉状态(除非您重新模板化控件,否则这将不起作用,AFAIK)

var visualStateGroups = VisualStateManager.GetVisualStateGroups(buttonWarnings);

2)从visualStateGroups集合中获取“CommonStates”的VisualStateGroup

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

3) 获取“按下”的 VisualState:

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

4)更改该状态的情节提要

pressedVisualState.Storyboard = newStoryboardWithCustomImageBackgroundProperty;

免责声明:我现在不在电脑附近尝试它 - 这都是理论上的)

于 2013-07-17T16:18:24.203 回答
0

Actually its quite simple,

While in button pressed state....see part 3 in the image you uploaded above. Above all the colors there is a row containing 5 icons.

Click on 4th icon. it will show you option to choose image as background. enter image description here

于 2013-07-23T04:46:43.263 回答
0

网上有很多例子!看一些:

http://mobile.dzone.com/articles/windows-phone-buttonimage http://loekvandenouweland.com/index.php/2011/01/windows-phone-image-button/

于 2013-07-19T07:32:10.413 回答