2010-04-18 89 views
2

我已經在使用觸發器的wpf應用程序中開發了幾個自定義控件。轉換代碼的最快方法是什麼,以便我可以在wpf應用程序和silverlight應用程序中使用單個代碼庫。下面是代碼的樣本:將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> 

回答

3

那麼痛苦,因爲它的聲音,改變你的觸發器來使用VisualStateManager是你最好的選擇。它包含在WPF 4.0中,如果你被困在早期版本中,你可以從codeplex中獲得它。

它很糟糕,Silverlight不支持觸發器,但如果你需要支持這兩種平臺,我認爲這是你最好的選擇。

相關問題