我在使用触发器的wpf应用程序中开发了几个自定义控件。转换代码的最快方法是什么,这样我就可以在wpf应用程序和silverlight应用程序中使用单个代码库。以下是代码示例:
<Style x:Key="sButtonAction" TargetType="Button">
<!--<Setter Property="BitmapEffect" Value="{StaticResource BannerEffect}" />-->
<Setter Property="Height" Value="25" />
<Setter Property="Margin" Value="4" />
<Setter Property="Cursor" Value="Hand" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border x:Name="PART_Border" CornerRadius="10"
BorderThickness="{StaticResource sBorderThicknessStandard}"
BorderBrush="{StaticResource bColorBorder}"
Background="{StaticResource ButtonActionBackground}">
<TextBlock x:Name="PART_TextBlock" Margin="5,2,5,2" HorizontalAlignment="Center"
VerticalAlignment="Center" Foreground="White">
<ContentPresenter HorizontalAlignment="Center"
VerticalAlignment="Center" /></TextBlock>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="PART_TextBlock" Property="Foreground"
Value="#990000"></Setter>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="PART_Border" Property="Background"
Value="{StaticResource ButtonActionBackgroundSelected}"></Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
答案 0 :(得分:3)
听起来很痛苦,更改触发器以使用VisualStateManager
是最好的选择。它包含在WPF 4.0中,如果您遇到早期版本,则可以将其从codeplex中删除。
很糟糕,Silverlight不支持触发器,但如果你需要支持这两个平台,我认为这是你最好的选择。