Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将wpf触发器转换为silverlight的最佳方法?_Wpf_Triggers_Silverlight 4.0 - Fatal编程技术网

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

将wpf触发器转换为silverlight的最佳方法?,wpf,triggers,silverlight-4.0,Wpf,Triggers,Silverlight 4.0,我在wpf应用程序中开发了几个使用触发器的自定义控件。转换代码的最快方法是什么,这样我就有了一个既适用于wpf应用程序又适用于silverlight应用程序的代码库。以下是代码示例: <Style x:Key="sButtonAction" TargetType="Button"> <!--<Setter Property="BitmapEffect" Value="{StaticResource BannerEffect}" />--> <S

我在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>

听起来很痛苦,更改触发器以使用
VisualStateManager
是最好的选择。它包含在WPF4.0中,如果您仍停留在早期版本上,您可以从codeplex中获取它

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