【发布时间】:2016-11-10 19:37:16
【问题描述】:
我想创建一个带有多个按钮的应用程序。所以我想在我的应用程序中创建一个样式来定义按钮。按钮应该包含一个图像,并且当慕斯结束时该图像应该改变。
我为图片创建了资源:
<Image x:Key="Open-active" Source="Images/Open-active.png"/>
<Image x:Key="Open-over" Source="Images/Open-over.png"/>
<Image x:Key="Printer-active" Source="Images/Printer-active.png"/>
<Image x:Key="Printer-over" Source="Images/Printer-over.png"/>
我创建了一个样式(但不适用于资源类型Image):
<Style x:Key="ButtonMain" TargetType="Button"
BasedOn="{StaticResource {x:Static ToolBar.ButtonStyleKey}}">
<Setter Property="Height" Value="{StaticResource MainButtonHeight}"/>
<Setter Property="Width" Value="{StaticResource MainButtonWidth}"/>
<Setter Property="Margin" Value="5"/>
<Setter Property="Foreground" Value="Transparent"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Background">
<Setter.Value>
<ImageBrush ImageSource="???"/>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background">
<Setter.Value>
<ImageBrush ImageSource="???"/>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
如何正确创建我的Style 以及如何使用它?
我想用它来做这样的事情:
<Button Style="{StaticResource ButtonMain}"
ImageActive="{StaticResource Open-active}"
ImageOver="{StaticResource Open-over}"">
感谢您的帮助
【问题讨论】:
-
您可以创建自己的自定义控件。这可能是一个好的开始:codeproject.com/Tips/773386/WPF-ImageButton
-
我同意@CiccioRocca 的观点,你最好的办法是创建你自己的带有附加属性的自定义按钮控件。如果您不必拥有 ImageActive 和 ImageOver 属性,则可以基于彼此为每个变体创建样式。然后只需设置按钮样式。
-
谢谢你的回答我会看看这个