将wpf触发器转换为silverlight的最佳方法是什么?

时间:2010-04-18 19:48:58

标签: wpf triggers silverlight-4.0

我在使用触发器的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>

1 个答案:

答案 0 :(得分:3)

听起来很痛苦,更改触发器以使用VisualStateManager是最好的选择。它包含在WPF 4.0中,如果您遇到早期版本,则可以将其从codeplex中删除。

很糟糕,Silverlight不支持触发器,但如果你需要支持这两个平台,我认为这是你最好的选择。