最近开始WPF,我对XAML很陌生。我试图做一个计算器,看起来像IOS的一个。但是,当我改变Button
到Ellipse
,突出显示时,悬停或点击停止工作,如果突出显示的问题也要解决,我怎么去改变它的颜色?
<Button x:Name="ButtonEquals" Grid.Column="4" Grid.Row="6" Width="47" Height="47"
Content="=" Foreground="White"
BorderBrush="{x:Null}" Background="#FFFF9500">
<Button.Template>
<ControlTemplate TargetType="Button">
<Grid>
<Ellipse Fill="#FFFF9500"/>
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
</ControlTemplate>
</Button.Template>
</Button>
2条答案
按热度按时间9vw9lbht1#
您可以将
Trigger
添加到ControlTemplate
,并通过名称指定x:Name
并通过TargetName
引用Ellipse
。这样,您还可以定义其他状态。这只会以
Ellipse
的Fill
为目的,而不会变更样板中的其他控件。不过,这些值是硬式编码,无法从外部变更。如果您希望模板在某种程度上是可自定义的,则可以将其放在
Style
中,并使用TemplateBinding
或RelativeSource
与TemplatedParent
绑定模板化控件上的属性,以用于双向和特殊方案。此外,还可以添加FocusVisualStyle
,以便为键盘聚焦指定模板。如果要在多个按钮上重用该样式,请将其添加到范围内的资源字典中,并分配一个
x:Key
以通过StaticResource
或DynamicResource
引用它。khbbv19g2#
您需要创建按钮的
Style
,而不是Template
。按钮的模板可以在样式中设置(阅读WPF中有关Style
的更多信息):但实际上,您需要创建全局
ResourceDictionary
(请阅读相关内容),然后为所有按钮(如<Style x:Key="CalculatorButton">
)设置样式,以设置按钮(如<Button Content="1" Style="{StaticResource CalculatorButton}"/>
)