在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;
答案 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)
互联网上有很多例子! 看一下:
http://mobile.dzone.com/articles/windows-phone-buttonimage http://loekvandenouweland.com/index.php/2011/01/windows-phone-image-button/
答案 2 :(得分:0)
其实很简单,
按下按钮状态时....请参阅上面上传的图像中的第3部分。 在所有颜色之上有一行包含5个图标。
单击第4个图标。 它会显示您选择图像作为背景的选项。