在WP7中,无论何时点击一个按钮,按钮的背景变成白色,表明该按钮被点击并在释放鼠标按钮时变为正常。但是我想将按钮选择的颜色从白色更改为橙色。我可以如何点击它?如何在WP7中单击时更改按钮的颜色?
4
A
回答
13
你将不得不与Button
的Visual States
玩控制。以下是从Expression Blend
提取Button
默认样式:
<Style x:Key="ButtonStyle1" TargetType="Button">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderBrush" Value="{StaticResource PhoneForegroundBrush}"/>
<Setter Property="Foreground" Value="{StaticResource PhoneForegroundBrush}"/>
<Setter Property="BorderThickness" Value="{StaticResource PhoneBorderThickness}"/>
<Setter Property="FontFamily" Value="{StaticResource PhoneFontFamilySemiBold}"/>
<Setter Property="FontSize" Value="{StaticResource PhoneFontSizeMediumLarge}"/>
<Setter Property="Padding" Value="10,3,10,5"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid Background="Transparent">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal"/>
<VisualState x:Name="MouseOver"/>
<VisualState x:Name="Pressed">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentContainer">
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneBackgroundBrush}"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="ButtonBackground">
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneForegroundBrush}"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="ButtonBackground">
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneForegroundBrush}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Disabled">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentContainer">
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneDisabledBrush}"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="ButtonBackground">
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneDisabledBrush}"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="ButtonBackground">
<DiscreteObjectKeyFrame KeyTime="0" Value="Transparent"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Border x:Name="ButtonBackground" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" CornerRadius="0" Margin="{StaticResource PhoneTouchTargetOverhang}">
<ContentControl x:Name="ContentContainer" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Foreground="{TemplateBinding Foreground}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" Padding="{TemplateBinding Padding}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
你需要改变Pressed
可视状态:
(在这种情况下,背景改为Red
当按下按钮)
<VisualState x:Name="Pressed">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentContainer">
<DiscreteObjectKeyFrame KeyTime="0" Value="Red"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="ButtonBackground">
<DiscreteObjectKeyFrame KeyTime="0" Value="Red"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="ButtonBackground">
<DiscreteObjectKeyFrame KeyTime="0" Value="Red"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
0
您可以通过重新设计混合中的按钮控件来实现此目的。
- R单击控制
- 编辑模板
- 编辑副本
- 修改构成组件的格式进行选择视图状态
11
如果您正在开发Windows手机,Blend是免费的,它是一个非常强大的功能。我甚至会说强制性的,我强烈建议你使用它。在Blend中,编辑“按下”状态风格很简单。
- 在Visual Studio中,在解决方案资源管理器中,右键单击您的XAML页面,选择“在Expression Blend中打开”
右键点击按钮 - >编辑模板 - >创建副本(只需选择默认值为保存对话)
点击“状态”选项卡:(你会看到所有的不同的视觉状态的列表按钮可以有)
- 选择“按下”状态和编辑客场视觉上你的热量内容。
你完成了!
比较,试图编辑原始XAML,就像你将不得不在VS.
相关问题
- 1. 单击时更改按钮颜色(多次单击/颜色)
- 2. 如何使用引导单击时更改按钮的颜色?
- 3. 如何更改颜色点击按钮?
- 4. 如何在Android中点击时更改按钮的颜色?
- 5. 单击按钮时更改按钮颜色
- 6. 在Javascript中单击按钮时更改文本颜色
- 7. 单击时如何更改按钮的颜色,并在下次单击时恢复为默认颜色?
- 8. Windows Phone 7(WP7)点击更改按钮的背景颜色
- 9. 如何在点击按钮时更改矩形的颜色?
- 10. 更改按钮点击按钮颜色暂时在C#
- 11. 如何在点击切换按钮时更改背景颜色?
- 12. 如何更改按钮的颜色单击复选框
- 13. 如何更改按钮单击上的工具栏颜色?
- 14. 单击编辑按钮时更改单元格颜色
- 15. 如何在选择按钮时更改按钮的颜色?
- 16. 在android中单击按钮更改视图的颜色?
- 17. 在C#中单击按钮后更改文本的颜色..?
- 18. 更改点击按钮的颜色
- 19. 单击按钮时改变剩余按钮的颜色
- 20. 离子 - 如何更改点击时的按钮颜色
- 21. 单击时更改按钮的背景颜色
- 22. 单击时更改按钮的内容和颜色。
- 23. 基于散列值单击时更改按钮的颜色
- 24. 如何在Android中按下时更改颜色按钮的颜色?
- 25. 更改点击的按钮的颜色和关断单击
- 26. 如何在android中更改按钮选择或点击颜色?
- 27. 在VB.NET中单击更改按钮颜色
- 28. 点击(Javascript)时如何更改按钮颜色?
- 29. 单击时更改按钮背景颜色
- 30. 单击按钮时更改背景颜色
是否要设置切换按钮的样式? – 2011-01-19 05:17:41
我希望单击按钮的颜色变为橙色,并且在单击鼠标按钮后再次释放时会恢复正常。 – Shaireen 2011-01-19 05:21:49
我不可能在没有XAML的情况下以编程方式在C#中进行编程? – 2011-01-19 16:21:44